- Published on
Elasticsearch 升级指南
- Authors
- Name
- Liant
升级指南
需要注意下,升级时官方提供的重大变化.另外注意简单版本并不一定准确,同时需要同时参考官方具体的说明.
资料来源:
简单版本
需要注意的重大变化
8.12 无
8.11 无
8.10 无
8.9 无
8.8 无
8.7 无
8.6 无
8.5
The bulk API now rejects requests containing unrecognized actions
.bulk API
拒绝请求中包含未识别的action
8.4 无
8.3 无
8.2 无
8.1
Lenient parsing of bulk actions is deprecated
宽松的bulk解析被弃用
8.0
`action.destructive_requires_name` 默认false时允许用户使用通配符模式来删除、关闭或更改索引上的索引块
`indices.query.bool.max_clause_count` 被弃用,搜索最大数是系统自己处理
`The file and native realms are now enabled unless explicitly disabled.` 除非明确禁用,否则认证服务现在已启用。
ssl 设置有较大变化
PKCS#11 格式秘钥容器不能配置
kibana用户名改为kibana_system
`The node.local_storage setting has been removed.` 设置被移除,所以节点都需要本地存储
`Legacy role settings have been removed.` 节点角色部分被移除
`The listener thread pool has been removed.` 线程池大小设置被移除
`Several transport settings have been replaced.` 多个transport设置已被替换
`index.merge.policy.max_merge_at_once_explicit is deprecated and has no effect.` 段合并参数被弃用
`The index.translog.retention.age and index.translog.retention.size settings have been removed.` translog部分设置被移除
`Elasticsearch no longer emits deprecation logs or slow logs in plaintext.` Elasticsearch 不再以明文形式发出弃用日志或慢速日志
mapping调整
`Indices created in Elasticsearch 6.x and earlier versions are not supported.` 不支持在 Elasticsearch 6.x 及更早版本中创建的索引。
`Closed indices created in Elasticsearch 6.x and earlier versions are not supported.` 不支持在 Elasticsearch 6.x 及更早版本中创建的关闭索引。
`Multi-fields within multi-fields is no longer supported.` 多字段内的多字段被弃用
`The boost parameter on field mappings has been removed.` 字段映射上的参数boost已被移除
搜索调整
`REST API endpoints containing mapping types have been removed.` REST API中type字段被移除
`The terms aggregation no longer supports the _term order key.` terms聚合不再支持_term排序
`The date_histogram aggregation no longer supports the _time order key.` date_histogram聚合不再支持_time排序
`The date_histogram aggregation’s interval parameter is no longer valid.` date_histogram聚合的interval参数不再有效
`The nGram and edgeNGram token filter names have been removed.` nGram和edgeNGram的token filter被移除
`The nGram and edgeNGram tokenizer names have been removed.` nGram和edgeNGram的tokenizer被移除
`The force merge API’s max_num_segments and only_expunge_deletes parameters cannot both be specified in the same request.` 不能在同一请求中同时指定强制合并API参数 max_num_segments 和 only_expunge_deletes
`Synced flush has been removed.` 同步刷新已被删除
`In the reindex, delete by query, and update by query APIs, the size parameter has been renamed.` 在reindex、delete_by_query和update_by_query API 中,参数size已重命名。
`The update by query API now rejects unsupported script fields.` update_by_query API 对不支持的script字段返回错误
`Searches on the _type field are no longer supported.` search中_type被弃用,mapping中的type也被移除
`Aggregating and sorting on _id is disallowed by default.` 聚合和排序中_id默认情况下不允许
`The cutoff_frequency parameter has been removed from the match and multi_match query.` 该cutoff_frequency参数已从`match`和`multi_match`查询中删除
`The nested_filter and nested_path properties have been removed from the search API’s sort request body parameter.` 请求正文参数nested_filter和nested_path属性已从搜索 API中删除
`The search API’s indices_boost request body parameter no longer accepts object values.` 搜索api中请求体参数indices_boost不在支持object值
`The search API’s use_field_mapping request body parameter has been removed.` 搜索api中 请求体参数use_field_mapping被弃用
`The search API’s from request body and url parameter cannot be negative.` 搜索api中 请求体参数from不能为负值
`Range queries on date fields treat numeric values alwas as milliseconds-since-epoch.` Range查询如果是数字会现在被认为是milliseconds-since-epoch(毫秒时间戳)
`The kibana_user role has been renamed kibana_admin.` kibana_user被改名为kibana_admin
`Several EOL operating systems are no longer supported.` 部分操作系统不在支持
`Java 17 is required.` 要求Java17
`JAVA_HOME is no longer supported.` JAVA_HOME 不在支持
7.17
- 驼峰式日期格式(yyyyMMdd)已弃用
7.16
- 临时设置重启后服务会失效,不推荐使用临时设置 临时设置迁移
- ssl配置项调整,开启需要显示设置
- 监控插件收集和传送监控数据被弃用
- 直接访问系统索引被弃用
- 脚本上下文缓存已被弃用
7.15
- 在 Elasticsearch 6.x 及更早版本中创建的索引已弃用(数据导如不了8.X版本)
7.14
- 集群断定升级完成后不再接受未升级节点
7.13
- 日志设置被弃用,用其他代替 index.indexing.slowlog.level and index.search.slowlog.level
- 多个数据路径支持被弃用(数据存储)
7.12
- 搜索api中指定field参数后的返回结果结构调整了
7.11
- 请求中有body,但body为空时返回错误
- 高亮大小写问题
- 对文本类的字段做计算的聚合直接返回错误
7.10
- 限制 nested查询中inner_hits部分, top_hits聚合 文档字段数量
REST API 系统索引被弃用 GET _cluster/health GET {index}/_recovery GET _cluster/allocation/explain GET _cluster/state POST _cluster/reroute GET {index}/_stats GET {index}/_segments GET {index}/_shard_stores GET _cat/[indices,aliases,health,recovery,shards,segments] 映射和模板字段的boost参数被弃用
7.9
- 节点角色已经弃用,使用node.roles设置实例
node.data node.ingest node.master node.ml node.remote_cluster_client node.transform node.voting_only
7.8
- 默认用户更名kibana->kibana_system
- value_count聚合优化
- enabled无法更改根映射的映射参数。
7.7
- 高亮调整,被忽略的keyword值不会高亮
- 对date_range处理调成range一样,不指定毫秒时四舍五入
- 检查动态模板更严格
7.6
- mapping中的 sparse_vector 字段被遗弃,8.0被删除
- 禁用 nGram 和 edgeNGram 标记器(tokenizer)
官方版本
Migrating to 8.12
无
Migrating to 8.11
无
Migrating to 8.10
Cluster and node setting changes
`Remove the unused executor builder for vector tile plugin`
Details: The threadpool called vectortile is a left over from the original development of the vector tile search end point and it is used nowhere. It can still be a breaking change if it is configured on the elasticsearch yml file, for example by changing the threadpool size thread_pool.vectortile.size=8'
Impact: In the case the threadpool appears on the yaml file, Elasticsearch will not start until those lines are removed.
Java API changes
`Change pre-configured and cached analyzer components to use IndexVersion instead of Version`
Details: This PR changes the types used to obtain pre-configured components from Version to IndexVersion, with corresponding changes to method names.
Prior to 8.10, there is a one-to-one mapping between node version and index version, with corresponding constants in the IndexVersion class. Starting in 8.10, IndexVersion is versioned independently of node version, and will be a simple incrementing number. For more information on how to use IndexVersion and other version types, please see the contributing guide.
Impact: Analysis components now take IndexVersion instead of Version
Authorization deprecations
`Mark apm_user for removal in a future major release`
Details: The apm_user role has been deprecated and will be removed in a future major release. Users should migrate to editor and viewer roles
Impact: Users will have to migrate to editor and viewer roles
Migrating to 8.9
REST API changes
`Switch TDigestState to use HybridDigest by default`
Details: The default implementation for TDigest in percentile calculations switches to a new internal implementation offering superior performance (2x-10x speedup), at a very small accuracy penalty for very large sample populations.
Impact: This change leads to generating slightly different results in percentile calculations. If the highest possible accuracy is desired, or it’s crucial to produce exactly the same results as in previous versions, one can either set execution_hint to high_accuracy in the tdigest spec of a given percentile calculation, or set search.aggs.tdigest_execution_hint to high_accuracy in cluster settings to apply to all percentile queries.
Migrating to 8.8
Cluster and node setting deprecations
`Deprecate cluster.routing.allocation.type`
Details: The cluster.routing.allocation.type setting is deprecated and will be removed in a future version.
Impact: Discontinue use of the cluster.routing.allocation.type setting.
Migrating to 8.7
Ingest changes
`Making JsonProcessor stricter so that it does not silently drop data` 更加JsonProcessor严格,这样它就不会默默地删除数据
Details: The ingest node’s json processor was previously lenient. It would accept invalid JSON data if it started with valid JSON data. Anything after the valid part would be silently discarded. From 8.7 onwards, the default behavior is to reject invalid JSON data with an exception so that data is not silently lost. The old behavior can be reproduced by passing false as the value of the new strict_json_parsing processor parameter. We consider this change to be a bugfix but list it here as a breaking change since it may affect the behavior of applications which were sending invalid JSON data to the json processor.
Impact: Ensure your application only sends valid JSON data to the json processor, or modify the json processors in your pipelines to set the strict_json_parsing parameter to false.
Migrating to 8.6
Deprecations 弃用
The following functionality has been deprecated in Elasticsearch 8.6 and will be removed in a future version. While this won’t have an immediate impact on your applications, we strongly encourage you to take the described steps to update your code after upgrading to 8.6.
To find out if you are using any deprecated functionality, enable deprecation logging.
CRUD deprecations CRUD(导入数据ingest)
`Deprecate remove_binary default of false for ingest attachment processor` 弃用摄取附加处理器的remove_binary默认值为false
Details: The default "remove_binary" option for the attachment processor will be changed from false to true in a later Elasticsearch release. This means that the binary file sent to Elasticsearch will not be retained.
Impact: Users should update the "remove_binary" option to be explicitly true or false, instead of relying on the default value, so that no default value changes will affect Elasticsearch.
Cluster and node setting deprecations 集群和节点设置
`Ensure balance threshold is at least 1` 确保平衡阈值至少为 1
Details: Values for cluster.routing.allocation.balance.threshold smaller than 1 are now ignored. Support for values less than 1 for this setting is deprecated and will be forbidden in a future version.
Impact: Set cluster.routing.allocation.balance.threshold to be at least 1.
Mapping deprecations 映射
`Deprecate silently ignoring type, fields, copy_to and boost in metadata field definition` 元数据字段定义,type, fields, copy_to and boost静默忽略类型被弃用
Details: Unsupported parameters like type, fields, copy_to and boost are silently ignored when provided as part of the configuration of a metadata field in the index mappings. They will cause a deprecation warning when used in the mappings for indices that are created from 8.6 onwards.
Impact: To resolve the deprecation warning, remove the mention of type, fields, copy_to or boost from any metadata field definition as part of index mappings. They take no effect so removing them won’t have any impact besides resolving the deprecation warning.
REST API deprecations
`state field is deprecated in /_cluster/reroute response` /_cluster/reroute 响应中不推荐使用 state 字段
Details: state field is deprecated in /_cluster/reroute response. Cluster state does not provide meaningful information about the result of reroute/commands execution. There are no guarantees that this exact state would be applied.
Impact: Reroute API users should not rely on state field and instead use explain to request result of commands execution.
Migrating to 8.5
REST API changes
`The bulk API now rejects requests containing unrecognized actions` `bulk API`拒绝请求中包含未识别的action
Details: Requests to the bulk API comprise a sequence of items, each of which starts with a JSON object describing the item. This object includes the type of action to perform with the item which should be one of create, update, index, or delete. Earlier versions of Elasticsearch had a bug that caused them to ignore items with an unrecognized type, skipping the next line in the request, but this lenient behaviour meant that there is no way for the client to associate the items in the response with the items in the request, and in some cases it would cause the remainder of the request to be parsed incorrectly.
From version 8.5 onwards, requests to the bulk API must comprise only items with recognized types. Elasticsearch will reject requests containing any items with an unrecognized type with a 400 Bad Request error response.
We consider this change to be a bugfix but list it here as a breaking change since it may affect the behaviour of applications which rely on being able to send unrecognized actions to Elasticsearch.
Impact: Ensure your application only sends items with type create, update, index or delete to the bulk API.
Plugin API deprecations 插件
扩展 NetworkPlugin 接口的插件已被弃用。
`Details` 细节
Details: Plugins may override funcionality that controls how nodes connect with other nodes over TCP/IP. These plugins extend the NetworkPlugin interface. In the next major release, these plugins will fail to install.
Impact: Discontinue using any plugins which extend NetworkPlugin. You can see if any plugins use deprecated functionality by checking the Elasticsearch deprecation log.
`Extending DiscoveryPlugin to override join validators or election strategies is deprecated` 不推荐扩展 DiscoveryPlugin 以覆盖加入验证器或选举策略
Details: Plugins that extend DiscoveryPlugin may override getJoinValidator and getElectionStrategies. These methods are implementation details of the clustering mechanism within Elasticsearch. They should not be overriden. In the next major release, plugins overriding getJoinValidator or getElectionStrategies will fail to install.
Impact: Discontinue using any plugins that override getJoinValidator or getElectionStrategies in DiscoveryPlugin. You can see if any plugins use deprecated functionality by checking the Elasticsearch deprecation log.
Migrating to 8.4
REST API deprecations
`Deprecate the _knn_search endpoint` _knn_search 搜索被弃用
Details: The kNN search API is deprecated in favor of the new knn option inside the search API. The knn option is now the recommended way of running ANN search.
Impact: Users should switch from _knn_search to the search knn option.
Migrating to 8.3
`Cluster and node setting deprecations`
`Configuring a bind DN in an LDAP or Active Directory (AD) realm without a corresponding bind password is deprecated` 授权策略细节调整
轻量级目录访问协议 (LDAP)
distinguished name (DN)
Details: For LDAP or AD authentication realms, setting a bind DN (via the xpack.security.authc.realms.ldap.*.bind_dn realm setting) without a bind password is a misconfiguration that may prevent successful authentication to the node. In the next major release, nodes will fail to start if a bind DN is specified without a password.
Impact: If you have a bind DN configured for an LDAP or AD authentication realm, set a bind password for LDAP or Active Directory. Configuring a bind DN without a password generates a warning in the deprecation logs.
Note: This deprecation only applies if your current LDAP or AD configuration specifies a bind DN without a password. This scenario is unlikely, but might impact a small subset of users.
Migrating to 8.2
无
Migrating to 8.1
REST API changes REST API
`The search API’s fields parameter now normalizes geometry objects that cross the international dateline`
Details: The search API’s fields parameter now normalizes geo_shape objects that cross the international dateline (+/-180° longitude). For example, if a polygon crosses the dateline, the fields parameter returns it as two polygons. You can still retrieve original, unnormalized geometry objects from _source.
Impact: If your application requires unnormalized geometry objects, retrieve them from _source rather than using the fields parameter.
Deprecations 弃用
Cluster and node setting deprecations 集群和节点设置
`Legacy values for the discovery.type setting are deprecated` 历史设置项discovery.type被弃用
Details: Legacy values for the discovery.type setting are deprecated and will be forbidden in a future version.
Impact: Do not set discovery.type to any value except single-node or multi-node. All other values are equivalent to the default discovery type which is multi-node. Where possible, omit this setting so that Elasticsearch uses the default discovery type.
REST API deprecations
`Lenient parsing of bulk actions is deprecated` 宽松的bulk解析被弃用
Details: Older versions of Elasticsearch parse the action lines of bulk requests very permissively and would silently ignore invalid or malformed actions. This lenience is deprecated and a future version will reject bulk requests containing invalid actions.
Impact: Ensure that bulk actions are well-formed JSON objects containing a single entry with the correct key.
`Deprecate index_include_frozen request parameter in _sql API` 在_sql的api中index_include_frozen参数被弃用
Details: Following the deprecation of frozen indices, the index_include_frozen parameter and FROZEN syntax is now also deprecated.
Impact: You should unfreeze frozen indices using the unfreeze index API and stop using the index_include_frozen parameter or the FROZEN keyword in SQL queries. For some use cases, the frozen tier may be a suitable replacement for frozen indices. See data tiers for more information.
Migrating to 8.0
Cluster and node setting changes 集群和节点设置
`action.destructive_requires_name now defaults to true. logo cloud` 默认false时允许用户使用通配符模式来删除、关闭或更改索引上的索引块
Details: The default for the action.destructive_requires_name setting changes from false to true in Elasticsearch 8.0.0.
Previously, defaulting to false allowed users to use wildcard patterns to delete, close, or change index blocks on indices. To prevent the accidental deletion of indices that happen to match a wildcard pattern, we now default to requiring that destructive operations explicitly name the indices to be modified.
Impact: To use wildcard patterns for destructive actions, set action.destructive_requires_name to false using the https://www.elastic.co/guide/en/elasticsearch/reference/master/cluster-update-settings.html cluster settings API].
`You can no longer set xpack.searchable.snapshot.shared_cache.size on non-frozen nodes.` 非冻结节点不能设置该值
Details: You can no longer set xpack.searchable.snapshot.shared_cache.size on a node that doesn’t have the data_frozen node role. This setting reserves disk space for the shared cache of partially mounted indices. Elasticsearch only allocates partially mounted indices to nodes with the data_frozen role.
Impact: Remove xpack.searchable.snapshot.shared_cache.size from elasticsearch.yml for nodes that don’t have the data_frozen role. Specifying the setting on a non-frozen node will result in an error on startup.
`indices.query.bool.max_clause_count is deprecated and has no effect.` 被弃用,搜索最大数是系统自己处理
Details: Elasticsearch will now dynamically set the maximum number of allowed clauses in a query, using a heuristic based on the size of the search thread pool and the size of the heap allocated to the JVM. This limit has a minimum value of 1024 and will in most cases be larger (for example, a node with 30Gb RAM and 48 CPUs will have a maximum clause count of around 27,000). Larger heaps lead to higher values, and larger thread pools result in lower values.
Impact: Queries with many clauses should be avoided whenever possible. If you previously bumped this setting to accommodate heavy queries, you might need to increase the amount of memory available to Elasticsearch, or to reduce the size of your search thread pool so that more memory is available to each concurrent search.
In previous versions of Lucene you could get around this limit by nesting boolean queries within each other, but the limit is now based on the total number of leaf queries within the query as a whole and this workaround will no longer help.
Specifying indices.query.bool.max_clause_count will have no effect but will generate deprecation warnings. To avoid these warnings, remove the setting from elasticsearch.yml during an upgrade or node restart.
`indices.lifecycle.poll_interval must be greater than 1s.` 轮询间隔现在必须至少为1s(索引生命周期管理)
Details: Setting indices.lifecycle.poll_interval too low can cause excessive load on a cluster. The poll interval must now be at least 1s (one second).
Impact: Set indices.lifecycle.poll_interval setting to 1s or greater in elasticsearch.yml or through the cluster update settings API.
Setting indices.lifecycle.poll_interval to less than 1s in elasticsearch.yml will result in an error on startup. Cluster update settings API requests that set indices.lifecycle.poll_interval to less than 1s will return an error.
`The file and native realms are now enabled unless explicitly disabled.` 除非明确禁用,否则认证服务现在已启用。
Details: The file and native realms are now enabled unless explicitly disabled. If explicitly disabled, the file and native realms remain disabled at all times.
Previously, the file and native realms had the following implicit behaviors:
- If the file and native realms were not configured, they were implicitly disabled if any other realm was configured.
- If no other realm was available because realms were either not configured, not permitted by license, or explicitly disabled, the file and native realms were enabled, even if explicitly disabled.
Impact: To explicitly disable the file or native realm, set the respective file.<realm-name>.enabled or native.<realm-name>.enabled setting to false under the xpack.security.authc.realms namespace in elasticsearch.yml.
The following configuration example disables the native realm and the file realm.
xpack.security.authc.realms:
native.realm1.enabled: false
file.realm2.enabled: false
`The realm order setting is now required.` 认证顺序设置是必须的
Details: The xpack.security.authc.realms.{type}.{name}.order setting is now required and must be specified for each explicitly configured realm. Each value must be unique.
Impact: The cluster will fail to start if the requirements are not met.
For example, the following configuration is invalid:
xpack.security.authc.realms.kerberos.kerb1:
keytab.path: es.keytab
remove_realm_name: false
And must be configured as:
xpack.security.authc.realms.kerberos.kerb1:
order: 0
keytab.path: es.keytab
remove_realm_name: false
`cluster.routing.allocation.disk.include_relocations has been removed.` 设置被移除(磁盘使用,分片分配设置)
Details: Elasticsearch now always accounts for the sizes of relocating shards when making allocation decisions based on the disk usage of the nodes in the cluster. In earlier versions, you could disable this by setting cluster.routing.allocation.disk.include_relocations to false. That could result in poor allocation decisions that could overshoot watermarks and require significant extra work to correct. The cluster.routing.allocation.disk.include_relocations setting has been removed.
Impact: Remove the cluster.routing.allocation.disk.include_relocations setting. Specifying this setting in elasticsearch.yml will result in an error on startup.
`cluster.join.timeout has been removed.` 现在有尝试,不在超时
Details: The cluster.join.timeout setting has been removed. Join attempts no longer time out.
Impact: Remove cluster.join.timeout from elasticsearch.yml.
`discovery.zen settings have been removed.` 设置被移除(集群自动发现机制)
Details: All settings under the discovery.zen namespace are no longer supported. They existed only only for BWC reasons in 7.x. This includes:
discovery.zen.minimum_master_nodes
discovery.zen.no_master_block
discovery.zen.hosts_provider
discovery.zen.publish_timeout
discovery.zen.commit_timeout
discovery.zen.publish_diff.enable
discovery.zen.ping.unicast.concurrent_connects
discovery.zen.ping.unicast.hosts.resolve_timeout
discovery.zen.ping.unicast.hosts
discovery.zen.ping_timeout
discovery.zen.unsafe_rolling_upgrades_enabled
discovery.zen.fd.connect_on_network_disconnect
discovery.zen.fd.ping_interval
discovery.zen.fd.ping_timeout
discovery.zen.fd.ping_retries
discovery.zen.fd.register_connection_listener
discovery.zen.join_retry_attempts
discovery.zen.join_retry_delay
discovery.zen.join_timeout
discovery.zen.max_pings_from_another_master
discovery.zen.send_leave_request
discovery.zen.master_election.wait_for_joins_timeout
discovery.zen.master_election.ignore_non_master_pings
discovery.zen.publish.max_pending_cluster_states
discovery.zen.bwc_ping_timeout
Impact: Remove the discovery.zen settings from elasticsearch.yml. Specifying these settings will result in an error on startup.
`http.content_type.required has been removed.` 设置被移除,用户HTTP请求内容检查
Details: The http.content_type.required setting was deprecated in Elasticsearch 6.0 and has been removed in Elasticsearch 8.0. The setting was introduced in Elasticsearch 5.3 to prepare users for Elasticsearch 6.0, where content type auto detection was removed for HTTP requests.
Impact: Remove the http.content_type.required setting from elasticsearch.yml. Specifying this setting will result in an error on startup.
`http.tcp_no_delay has been removed.` 设置被移除,参数变了
Details: The http.tcp_no_delay setting was deprecated in 7.x and has been removed in 8.0. Use http.tcp.no_delay instead.
Impact: Replace the http.tcp_no_delay setting with http.tcp.no_delay. Specifying http.tcp_no_delay in elasticsearch.yml will result in an error on startup.
`network.tcp.connect_timeout has been removed.` 设置被移除
Details: The network.tcp.connect_timeout setting was deprecated in 7.x and has been removed in 8.0. This setting was a fallback setting for transport.connect_timeout.
Impact: Remove the network.tcp.connect_timeout setting. Use the transport.connect_timeout setting to change the default connection timeout for client connections. Specifying network.tcp.connect_timeout in elasticsearch.yml will result in an error on startup.
`node.max_local_storage_nodes has been removed.` 设置被移除,分片存储
Details: The node.max_local_storage_nodes setting was deprecated in 7.x and has been removed in 8.0. Nodes should be run on separate data paths to ensure that each node is consistently assigned to the same data path.
Impact: Remove the node.max_local_storage_nodes setting. Specifying this setting in elasticsearch.yml will result in an error on startup.
`The accept_default_password setting has been removed.` 设置被移除,改了认证机制
Details: The xpack.security.authc.accept_default_password setting has not had any affect since the 6.0 release of Elasticsearch and is no longer allowed.
Impact: Remove the xpack.security.authc.accept_default_password setting from elasticsearch.yml. Specifying this setting will result in an error on startup.
`The roles.index.cache.* settings have been removed.` 设置被移除,
Details: The xpack.security.authz.store.roles.index.cache.max_size and xpack.security.authz.store.roles.index.cache.ttl settings have been removed. These settings have been redundant and deprecated since the 5.2 release of Elasticsearch.
Impact: Remove the xpack.security.authz.store.roles.index.cache.max_size and xpack.security.authz.store.roles.index.cache.ttl settings from elasticsearch.yml . Specifying these settings will result in an error on startup.
`The transport.profiles.*.xpack.security.type setting has been removed.` 设置被移除,现在只有一个客户端咯
Details: The transport.profiles.*.xpack.security.type setting is no longer supported. The Transport Client has been removed and all client traffic now uses the HTTP transport. Transport profiles using this setting should be removed.
Impact: Remove the transport.profiles.*.xpack.security.type setting from elasticsearch.yml. Specifying this setting in a transport profile will result in an error on startup.
`The nameid_format SAML realm setting no longer has a default value.` nameid_format SAML realm 没有默认值了
Details: In SAML, Identity Providers (IdPs) can either be explicitly configured to release a NameID with a specific format, or configured to attempt to conform with the requirements of a Service Provider (SP). The SP declares its requirements in the NameIDPolicy element of a SAML Authentication Request. In Elasticsearch, the nameid_format SAML realm setting controls the NameIDPolicy value.
Previously, the default value for nameid_format was `urn:oasis:names:tc:SAML:2.0:nameid-format:transient`. This setting created authentication requests that required the IdP to release NameID with a transient format.
The default value has been removed, which means that Elasticsearch will create SAML Authentication Requests by default that don’t put this requirement on the IdP. If you want to retain the previous behavior, set nameid_format to `urn:oasis:names:tc:SAML:2.0:nameid-format:transient`.
Impact: If you currently don’t configure nameid_format explicitly, it’s possible that your IdP will reject authentication requests from Elasticsearch because the requests do not specify a NameID format (and your IdP is configured to expect one). This mismatch can result in a broken SAML configuration. If you’re unsure whether your IdP is explicitly configured to use a certain NameID format and you want to retain current behavior , try setting nameid_format to `urn:oasis:names:tc:SAML:2.0:nameid-format:transient` explicitly.
`The xpack.security.transport.ssl.enabled setting is now required to configure xpack.security.transport.ssl settings.` ssl有前提设置
Details: It is now an error to configure any SSL settings for xpack.security.transport.ssl without also configuring xpack.security.transport.ssl.enabled.
Impact: If using other xpack.security.transport.ssl settings, you must explicitly specify the xpack.security.transport.ssl.enabled setting.
If you do not want to enable SSL and are currently using other xpack.security.transport.ssl settings, do one of the following:
Explicitly specify xpack.security.transport.ssl.enabled as false
Discontinue use of other xpack.security.transport.ssl settings
If you want to enable SSL, follow the instructions in Encrypting communications between nodes in a cluster. As part of this configuration, explicitly specify xpack.security.transport.ssl.enabled as true.
For example, the following configuration is invalid:
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
And must be configured as:
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
or false.
`The xpack.security.http.ssl.enabled setting is now required to configure xpack.security.http.ssl settings.` ssl有前提设置
Details: It is now an error to configure any SSL settings for xpack.security.http.ssl without also configuring xpack.security.http.ssl.enabled.
Impact: If using other xpack.security.http.ssl settings, you must explicitly specify the xpack.security.http.ssl.enabled setting.
If you do not want to enable SSL and are currently using other xpack.security.http.ssl settings, do one of the following:
Explicitly specify xpack.security.http.ssl.enabled as false
Discontinue use of other xpack.security.http.ssl settings
If you want to enable SSL, follow the instructions in Encrypting HTTP client communications. As part of this configuration, explicitly specify xpack.security.http.ssl.enabled as true.
For example, the following configuration is invalid:
xpack.security.http.ssl.certificate: elasticsearch.crt
xpack.security.http.ssl.key: elasticsearch.key
xpack.security.http.ssl.certificate_authorities: [ "corporate-ca.crt" ]
And must be configured as either:
xpack.security.http.ssl.enabled: true or false.
xpack.security.http.ssl.certificate: elasticsearch.crt
xpack.security.http.ssl.key: elasticsearch.key
xpack.security.http.ssl.certificate_authorities: [ "corporate-ca.crt" ]
`A xpack.security.transport.ssl certificate and key are now required to enable SSL for the transport interface.` ssl有前提设置
Details: It is now an error to enable SSL for the transport interface without also configuring a certificate and key through use of the xpack.security.transport.ssl.keystore.path setting or the xpack.security.transport.ssl.certificate and xpack.security.transport.ssl.key settings.
Impact: If xpack.security.transport.ssl.enabled is set to true, provide a certificate and key using the xpack.security.transport.ssl.keystore.path setting or the xpack.security.transport.ssl.certificate and xpack.security.transport.ssl.key settings. If a certificate and key is not provided, Elasticsearch will return in an error on startup.
`A xpack.security.http.ssl certificate and key are now required to enable SSL for the HTTP server.` ssl有前提设置
Details: It is now an error to enable SSL for the HTTP (Rest) server without also configuring a certificate and key through use of the xpack.security.http.ssl.keystore.path setting or the xpack.security.http.ssl.certificate and xpack.security.http.ssl.key settings.
Impact: If xpack.security.http.ssl.enabled is set to true, provide a certificate and key using the xpack.security.http.ssl.keystore.path setting or the xpack.security.http.ssl.certificate and xpack.security.http.ssl.key settings. If certificate and key is not provided, Elasticsearch will return in an error on startup.
`PKCS#11 keystores and trustores cannot be configured in elasticsearch.yml` PKCS#11 格式秘钥容器不能配置
Details: The settings *.ssl.keystore.type and *.ssl.truststore.type no longer accept "PKCS11" as a valid type. This applies to all SSL settings in Elasticsearch, including
xpack.security.http.keystore.type
xpack.security.transport.keystore.type
xpack.security.http.truststore.type
xpack.security.transport.truststore.type
As well as SSL settings for security realms, watcher and monitoring.
Use of a PKCS#11 keystore or truststore as the JRE’s default store is not affected.
Impact: If you have a PKCS#11 keystore configured within your elasticsearch.yml file, you must remove that configuration and switch to a supported keystore type, or configure your PKCS#11 keystore as the JRE default store.
`The kibana user has been replaced by kibana_system.` kibana用户名改为kibana_system
Details: The kibana user was historically used to authenticate Kibana to Elasticsearch. The name of this user was confusing, and was often mistakenly used to login to Kibana. This has been renamed to kibana_system in order to reduce confusion, and to better align with other built-in system accounts.
Impact: Replace any use of the kibana user with the kibana_system user. Specifying the kibana user in kibana.yml will result in an error on startup.
If your kibana.yml used to contain:
elasticsearch.username: kibana
then you should update to use the new kibana_system user instead:
elasticsearch.username: kibana_system
`The search.remote.* settings have been removed.` 远程搜索设置被移除
Details: In 6.5 these settings were deprecated in favor of cluster.remote. In 7.x we provided automatic upgrading of these settings to their cluster.remote counterparts. In 8.0.0, these settings have been removed. Elasticsearch will refuse to start if you have these settings in your configuration or cluster state.
Impact: Use the replacement cluster.remote settings. Discontinue use of the search.remote.* settings. Specifying these settings in elasticsearch.yml will result in an error on startup.
`The pidfile setting has been replaced by node.pidfile.` pidfile替换为node.pidfile
Details: To ensure that all settings are in a proper namespace, the pidfile setting was previously deprecated in version 7.4.0 of Elasticsearch, and is removed in version 8.0.0. Instead, use node.pidfile.
Impact: Use the node.pidfile setting. Discontinue use of the pidfile setting. Specifying the pidfile setting in elasticsearch.yml will result in an error on startup.
`The processors setting has been replaced by node.processors.` processors替换为node.processors
Details: To ensure that all settings are in a proper namespace, the processors setting was previously deprecated in version 7.4.0 of Elasticsearch, and is removed in version 8.0.0. Instead, use node.processors.
Impact: Use the node.processors setting. Discontinue use of the processors setting. Specifying the processors setting in elasticsearch.yml will result in an error on startup.
`The node.processors setting can no longer exceed the available number of processors.` 不能大于实际可用处理器
Details: Previously it was possible to set the number of processors used to set the default sizes for the thread pools to be more than the number of available processors. As this leads to more context switches and more threads but without an increase in the number of physical CPUs on which to schedule these additional threads, the node.processors setting is now bounded by the number of available processors.
Impact: If specified, ensure the value of node.processors setting does not exceed the number of available processors. Setting the node.processors value greater than the number of available processors in elasticsearch.yml will result in an error on startup.
`The cluster.remote.connect setting has been removed.` 设置被移除
Details: In Elasticsearch 7.7.0, the setting cluster.remote.connect was deprecated in favor of setting node.remote_cluster_client. In Elasticsearch 8.0.0, the setting cluster.remote.connect is removed.
Impact: Use the node.remote_cluster_client setting. Discontinue use of the cluster.remote.connect setting. Specifying the cluster.remote.connect setting in elasticsearch.yml will result in an error on startup.
`The node.local_storage setting has been removed.` 设置被移除,所以节点都需要本地存储
Details: In Elasticsearch 7.8.0, the setting node.local_storage was deprecated and beginning in Elasticsearch 8.0.0 all nodes will require local storage. Therefore, the node.local_storage setting has been removed.
Impact: Discontinue use of the node.local_storage setting. Specifying this setting in elasticsearch.yml will result in an error on startup.
`The auth.password setting for HTTP monitoring has been removed.` 设置被移除
Details: In Elasticsearch 7.7.0, the setting xpack.monitoring.exporters.<exporterName>.auth.password was deprecated in favor of setting xpack.monitoring.exporters.<exporterName>.auth.secure_password. In Elasticsearch 8.0.0, the setting xpack.monitoring.exporters.<exporterName>.auth.password is removed.
Impact: Use the xpack.monitoring.exporters.<exporterName>.auth.secure_password setting. Discontinue use of the xpack.monitoring.exporters.<exporterName>.auth.password setting. Specifying the xpack.monitoring.exporters.<exporterName>.auth.password setting in elasticsearch.yml will result in an error on startup.
`Settings used to disable basic license features have been removed.` 禁用基本许可证设置被移除,始终启用
Details: The following settings were deprecated in Elasticsearch 7.8.0 and have been removed in Elasticsearch 8.0.0:
xpack.enrich.enabled
xpack.flattened.enabled
xpack.ilm.enabled
xpack.monitoring.enabled
xpack.rollup.enabled
xpack.slm.enabled
xpack.sql.enabled
xpack.transform.enabled
xpack.vectors.enabled
These basic license features are now always enabled.
If you have disabled ILM so that you can use another tool to manage Watcher indices, the newly introduced xpack.watcher.use_ilm_index_management setting may be set to false.
Impact: Discontinue use of the removed settings. Specifying these settings in elasticsearch.yml will result in an error on startup.
`Settings used to defer cluster recovery pending a certain number of master nodes have been removed.` 用于推迟集群恢复等待一定数量的主节点的设置已被移除
Details: The following cluster settings have been removed:
gateway.expected_nodes
gateway.expected_master_nodes
gateway.recover_after_nodes
gateway.recover_after_master_nodes
It is safe to recover the cluster as soon as a majority of master-eligible nodes have joined so there is no benefit in waiting for any additional master-eligible nodes to start.
Impact: Discontinue use of the removed settings. If needed, use gateway.expected_data_nodes or gateway.recover_after_data_nodes to defer cluster recovery pending a certain number of data nodes.
`Legacy role settings have been removed.` 节点角色部分被移除
Details: The legacy role settings:
node.data
node.ingest
node.master
node.ml
node.remote_cluster_client
node.transform
node.voting_only
have been removed. Instead, use the node.roles setting. If you were previously using the legacy role settings on a 7.13 or later cluster, you will have a deprecation log message on each of your nodes indicating the exact replacement value for node.roles.
Impact: Discontinue use of the removed settings. Specifying these settings in elasticsearch.yml will result in an error on startup.
`The system call filter setting has been removed.` 系统调用过滤器设置已移除
Details: Elasticsearch uses system call filters to remove its ability to fork another process. This is useful to mitigate remote code exploits. These system call filters are enabled by default, and were previously controlled via the setting bootstrap.system_call_filter. Starting in Elasticsearch 8.0, system call filters will be required. As such, the setting bootstrap.system_call_filter was deprecated in Elasticsearch 7.13.0, and is removed as of Elasticsearch 8.0.0.
Impact: Discontinue use of the removed setting. Specifying this setting in Elasticsearch configuration will result in an error on startup.
`Tier filtering settings have been removed.` 层过滤设置已移除,将分片分配到特定节点
Details: The cluster and index level settings ending in ._tier used for filtering the allocation of a shard to a particular set of nodes have been removed. Instead, the tier preference setting, index.routing.allocation.include._tier_preference should be used. The removed settings are:
Cluster level settings:
cluster.routing.allocation.include._tier
cluster.routing.allocation.exclude._tier
cluster.routing.allocation.require._tier
Index settings:
index.routing.allocation.include._tier
index.routing.allocation.exclude._tier
index.routing.allocation.require._tier
Impact: Discontinue use of the removed settings. Specifying any of these cluster settings in Elasticsearch configuration will result in an error on startup. Any indices using these settings will have the settings archived (and they will have no effect) when the index metadata is loaded.
`Shared data path and per index data path settings are deprecated.` 分片数据路径和每个索引数据路径设置被弃用
Details: Elasticsearch uses the shared data path as the base path of per index data paths. This feature was previously used with shared replicas. Starting in 7.13.0, these settings are deprecated. Starting in 8.0 only existing indices created in 7.x will be capable of using the shared data path and per index data path settings.
Impact: Discontinue use of the deprecated settings.
`The single data node watermark setting is deprecated and now only accepts true.` 单数据节点水位设置只能为true
Details: In 7.14, setting cluster.routing.allocation.disk.watermark.enable_for_single_data_node to false was deprecated. Starting in 8.0, the only legal value will be true. In a future release, the setting will be removed completely, with same behavior as if the setting was true.
If the old behavior is desired for a single data node cluster, disk based allocation can be disabled by setting cluster.routing.allocation.disk.threshold_enabled: false
Impact: Discontinue use of the deprecated setting.
`The gateway.auto_import_dangling_indices setting has been removed.` 悬空索引设置被移除
Details: The gateway.auto_import_dangling_indices cluster setting has been removed. Previously, you could use this setting to automatically import dangling indices. However, automatically importing dangling indices is unsafe. Use the dangling indices APIs to manage and import dangling indices instead.
Impact: Discontinue use of the removed setting. Specifying the setting in elasticsearch.yml will result in an error on startup.
`The listener thread pool has been removed.` 线程池大小设置被移除
Details: Previously, the transport client used the thread pool to ensure listeners aren’t called back on network threads. The transport client has been removed in 8.0, and the thread pool is no longer needed.
Impact: Remove listener thread pool settings from elasticsearch.yml for any nodes. Specifying listener thread pool settings in elasticsearch.yml will result in an error on startup.
`The fixed_auto_queue_size thread pool type has been removed.` 设置被移除
Details: The fixed_auto_queue_size thread pool type, previously marked as an experimental feature, was deprecated in 7.x and has been removed in 8.0. The search and search_throttled thread pools have the fixed type now.
Impact: No action needed.
`Several transport settings have been replaced.` 多个transport设置已被替换
Details: The following settings have been deprecated in 7.x and removed in 8.0. Each setting has a replacement setting that was introduced in 6.7.
transport.tcp.port replaced by transport.port
transport.tcp.compress replaced by transport.compress
transport.tcp.connect_timeout replaced by transport.connect_timeout
transport.tcp_no_delay replaced by transport.tcp.no_delay
transport.profiles.profile_name.tcp_no_delay replaced by transport.profiles.profile_name.tcp.no_delay
transport.profiles.profile_name.tcp_keep_alive replaced by transport.profiles.profile_name.tcp.keep_alive
transport.profiles.profile_name.reuse_address replaced by transport.profiles.profile_name.tcp.reuse_address
transport.profiles.profile_name.send_buffer_size replaced by transport.profiles.profile_name.tcp.send_buffer_size
transport.profiles.profile_name.receive_buffer_size replaced by transport.profiles.profile_name.tcp.receive_buffer_size
Impact: Use the replacement settings. Discontinue use of the removed settings. Specifying the removed settings in elasticsearch.yml will result in an error on startup.
`Selective transport compression has been enabled by default.` 传输压缩默认开启
Details: Prior to 8.0, transport compression was disabled by default. Starting in 8.0, transport.compress defaults to indexing_data. This configuration means that the propagation of raw indexing data will be compressed between nodes.
Impact: Inter-node transit will get reduced along the indexing path. In some scenarios, CPU usage could increase.
`Transport compression defaults to lz4.` 压缩算法默认lz4
Details: Prior to 8.0, the transport.compression_scheme setting defaulted to deflate. Starting in 8.0, transport.compress_scheme defaults to lz4.
Prior to 8.0, the cluster.remote.<cluster_alias>.transport.compression_scheme setting defaulted to deflate when cluster.remote.<cluster_alias>.transport.compress was explicitly configured. Starting in 8.0, cluster.remote.<cluster_alias>.transport.compression_scheme will fallback to transport.compression_scheme by default.
Impact: This configuration means that transport compression will produce somewhat lower compression ratios in exchange for lower CPU load.
`The repositories.fs.compress node-level setting has been removed.` 节点级别的压缩被移除
Details: For shared file system repositories ("type": "fs"), the node level setting repositories.fs.compress could previously be used to enable compression for all shared file system repositories where compress was not specified. The repositories.fs.compress setting has been removed.
Impact: Discontinue use of the repositories.fs.compress node-level setting. Use the repository-specific compress setting to enable compression instead. Refer to Shared file system repository settings.
`When FIPS mode is enabled the default password hash is now PBKDF2_STRETCH` 启用 FIPS 模式后,默认密码哈希现在为 PBKDF2_STRETCH
Details: If xpack.security.fips_mode.enabled is true (see FIPS 140-2), the value of xpack.security.authc.password_hashing.algorithm now defaults to pbkdf2_stretch.
In earlier versions this setting would always default to bcrypt and a runtime check would prevent a node from starting unless the value was explicitly set to a "pbkdf2" variant.
There is no change for clusters that do not enable FIPS 140 mode.
Impact: This change should not have any impact on upgraded nodes. Any node with an explicitly configured value for the password hashing algorithm will continue to use that configured value. Any node that did not have an explicitly configured password hashing algorithm in Elasticsearch 6.x or Elasticsearch 7.x would have failed to start.
`The xpack.monitoring.history.duration will not delete indices created by metricbeat or elastic agent` `xpack.monitoring.history.duration`监控数据设置调整
Details: Prior to 8.0, Elasticsearch would internally handle removal of all monitoring indices according to the xpack.monitoring.history.duration setting.
When using metricbeat or elastic agent >= 8.0 to collect monitoring data, indices are managed via an ILM policy. If the setting is present, the policy will be created using the xpack.monitoring.history.duration as an initial retention period.
If you need to customize retention settings for monitoring data collected with metricbeat, please update the .monitoring-8-ilm-policy ILM policy directly.
The xpack.monitoring.history.duration setting will only apply to monitoring indices written using (legacy) internal collection, not indices created by metricbeat or agent.
Impact: After upgrading, insure that the .monitoring-8-ilm-policy ILM policy aligns with your desired retention settings.
If you only use metricbeat or agent to collect monitoring data, you can also remove any custom xpack.monitoring.history.duration settings.
Command line tool changes 命令行工具
`The elasticsearch-migrate tool has been removed.` 迁移工具被移除
Details: The elasticsearch-migrate tool provided a way to convert file realm users and roles into the native realm. It has been deprecated since Elasticsearch 7.2.0. Users and roles should now be created in the native realm directly.
Impact: Discontinue use of the elasticsearch-migrate tool. Attempts to use the elasticsearch-migrate tool will result in an error.
Index setting changes 索引设置
`Direct access to system indices is deprecated.` 直接访问系统索引被弃用
Details: Directly accessing system indices is deprecated, and may be prevented in a future version. If you must access a system index, create a security role with an index permission that targets the specific index and set the allow_restricted_indices permission to true. Refer to indices privileges for information on adding this permission to an index privilege.
Impact: Accessing system indices directly results in warnings in the header of API responses. If available, use Kibana or the associated feature’s Elasticsearch APIs to manage the data that you want to access.
`index.merge.policy.max_merge_at_once_explicit is deprecated and has no effect.` 段合并参数被弃用
Details: The index.merge.policy.max_merge_at_once_explicit index setting is deprecated and has no effect.
Previously, you could specify index.merge.policy.max_merge_at_once_explicit to set the maximum number of segments to merge at the same time during a force merge or when expunging deleted documents. In 8.0, this number is unlimited, regardless of the setting.
Impact: Specifying index.merge.policy.max_merge_at_once_explicit will have no effect but will generate deprecation warnings.
To avoid these deprecation warnings, discontinue use of the setting. Don’t specify the setting when creating new indices, and remove the setting from index and component templates.
To remove the setting from an existing data stream or index, specify the setting’s value as null using the update index settings API.
PUT my-index-000001/_settings
{
"index.merge.policy.max_merge_at_once_explicit": null
}
`The index.max_adjacency_matrix_filters index setting has been removed.` 设置被移除
Details: The index.max_adjacency_matrix_filters index setting has been removed. Previously, you could use this setting to configure the maximum number of filters for the adjacency matrix aggregation. The indices.query.bool.max_clause_count index setting now determines the maximum number of filters for the aggregation.
Impact: Discontinue use of the index.max_adjacency_matrix_filters index setting.
Requests that include the index setting will return an error. If you upgrade a cluster with a 7.x index that already contains the setting, Elasticsearch will archive the setting.
Remove the index setting from index and component templates. Attempts to use a template that contains the setting will fail and return an error. This includes automated operations, such the ILM rollover action.
`The index.force_memory_term_dictionary setting has been removed.` 设置被移除,优化内存,将词典导入硬盘
Details: The index.force_memory_term_dictionary setting was introduced in 7.0 as a temporary measure to allow users to opt-out of the optimization that leaves the term dictionary on disk when appropriate. This optimization is now mandatory and the setting is removed.
Impact: Discontinue use of the index.force_memory_term_dictionary index setting. Requests that include this setting will return an error.
`The index.soft_deletes.enabled setting has been removed.` 设置被禁用
Details: Creating indices with soft deletes disabled was deprecated in 7.6 and is no longer supported in 8.0. The index.soft_deletes.enabled setting can no longer be set to false.
Impact: Discontinue use of the index.soft_deletes.enabled index setting. Requests that set index.soft_deletes.enabled to false will return an error.
`The index.translog.retention.age and index.translog.retention.size settings have been removed.` 设置被移除
Details: Translog retention settings index.translog.retention.age and index.translog.retention.size were effectively ignored in 7.4, deprecated in 7.7, and removed in 8.0 in favor of soft deletes.
Impact: Discontinue use of the index.translog.retention.age and index.translog.retention.size index settings. Requests that include these settings will return an error.
Java API changes JavaAPI调整
`The indexlifecycle package has been renamed ilm in the Java High Level REST Client.` Java高级接口包改名
Details: In the high level REST client, the indexlifecycle package has been renamed to ilm to match the package rename inside the Elasticsearch code.
Impact: Update your workflow and applications to use the ilm package in place of indexlifecycle.
`Changes to Fuzziness.`
Details: To create Fuzziness instances, use the fromString and fromEdits method instead of the build method that used to accept both Strings and numeric values. Several fuzziness setters on query builders (e.g. MatchQueryBuilder#fuzziness) now accept only a Fuzziness instance instead of an Object.
Fuzziness used to be lenient when it comes to parsing arbitrary numeric values while silently truncating them to one of the three allowed edit distances 0, 1 or 2. This leniency is now removed and the class will throw errors when trying to construct an instance with another value (e.g. floats like 1.3 used to get accepted but truncated to 1).
Impact: Use the available constants (e.g. Fuzziness.ONE, Fuzziness.AUTO) or build your own instance using the above mentioned factory methods. Use only allowed Fuzziness values.
`Changes to Repository.`
Details: Repository has no dependency on IndexShard anymore. The contract of restoreShard and snapshotShard has been reduced to Store and MappingService in order to improve testability.
Impact: No action needed.
JVM option changes JVM 选项
`es.disk.auto_release_flood_stage_block has been removed.`
Details:If a node exceeds the flood-stage disk watermark then we add a block to all of its indices to prevent further writes as a last-ditch attempt to prevent the node completely exhausting its disk space. By default, from 7.4 onwards the block is automatically removed when a node drops below the high watermark again, but this behaviour could be disabled by setting the system property es.disk.auto_release_flood_stage_block to false. This behaviour is no longer optional, and this system property must now not be set.
Impact: Discontinue use of the es.disk.auto_release_flood_stage_block system property. Setting this system property will result in an error on startup.
`es.rest.url_plus_as_space has been removed.`
Details:Starting in version 7.4, a + in a URL will be encoded as %2B by all REST API functionality. Prior versions handled a + as a single space. In these previous versions, if your application required handling + as a single space, you could return to the old behaviour by setting the system property es.rest.url_plus_as_space to true. Note that this behaviour is deprecated and setting this system property to true will cease to be supported in version 8.
Impact: Update your application or workflow to assume + in a URL is encoded as %2B.
`es.unsafely_permit_handshake_from_incompatible_builds has been removed.`
Details:Elasticsearch has a check that verifies that communicating pairs of nodes of the same version are running exactly the same build and therefore using the same wire format as each other. In previous versions this check can be bypassed by setting the system property es.unsafely_permit_handshake_from_incompatible_builds to true. The use of this system property is now forbidden.
Impact: Discontinue use of the es.unsafely_permit_handshake_from_incompatible_builds system property, and ensure that all nodes of the same version are running exactly the same build. Setting this system property will result in an error on startup.
Logging changes 日志
`Elasticsearch JSON logs now comply with ECS.` Elasticsearch JSON 日志现在符合 ECS。
Details: Elasticsearch’s JSON logs now comply with the Elastic Common Schema (ECS). Previously, Elasticsearch’s JSON logs used a custom schema.
Impact: If your application parses Elasticsearch’s JSON logs, update it to support the new ECS format.
`Elasticsearch no longer emits deprecation logs or slow logs in plaintext.` Elasticsearch 不再以明文形式发出弃用日志或慢速日志
Details: Elasticsearch no longer emits a plaintext version of the following logs:
Deprecation logs
Indexing slow logs
Search slow logs
These logs are now only available in JSON.
Server logs are still available in both a JSON and plaintext format.
Impact: If your application parses Elasticsearch’s plaintext logs, update it to use the new ECS JSON logs.
`Audit logs are rolled-over and archived by size.` 审核日志按大小滚动和归档。
Details: In addition to the existing daily rollover, the security audit logs are now rolled-over by disk size limit as well. Moreover, the rolled-over logs are also gzip compressed.
Impact: The names of rolled over audit log files (but not the name of the current log) have changed. If you’ve set up automated tools to consume these files, you must configure them to use the new names and to possibly account for gzip archives instead of plain text. The Docker build of Elasticsearch is not affected because it logs on stdout, where rollover is not performed.
Mapping changes 索引
`Indices created in Elasticsearch 6.x and earlier versions are not supported.` 不支持在 Elasticsearch 6.x 及更早版本中创建的索引。
Details: Elasticsearch 8.0 can read indices created in version 7.0 or above. An Elasticsearch 8.0 node will not start in the presence of indices created in a version of Elasticsearch before 7.0.
Impact: Reindex indices created in Elasticsearch 6.x or before with Elasticsearch 7.x if they need to be carried forward to Elasticsearch 8.x.
`Closed indices created in Elasticsearch 6.x and earlier versions are not supported.` 不支持在 Elasticsearch 6.x 及更早版本中创建的关闭索引。
Details: In earlier versions a node would start up even if it had data from indices created in a version before the previous major version, as long as those indices were closed. Elasticsearch now ensures that it is compatible with every index, open or closed, at startup time.
Impact: Reindex closed indices created in Elasticsearch 6.x or before with Elasticsearch 7.x if they need to be carried forward to Elasticsearch 8.x.
`The maximum number of completion contexts per field is now 10.` 每个字段的完整上下文的最大数量现在为 10
Details: The number of completion contexts within a single completion field has been limited to 10.
Impact: Use a maximum of 10 completion contexts in a completion field. Specifying more than 10 completion contexts will return an error.
`Multi-fields within multi-fields is no longer supported.` 多字段内的多字段被弃用
Details: Previously, it was possible to define a multi-field within a multi-field. Defining chained multi-fields was deprecated in 7.3 and is now no longer supported.
Impact: To migrate mappings, all instances of fields that occur within a fields block should be removed, either by flattening the chained fields blocks into a single level, or by switching to copy_to if appropriate.
`The _field_names metadata field’s enabled parameter has been removed.` _field_names元数据字段的enabled参数已移除
Details: The setting has been deprecated with 7.5 and is no longer supported on new indices. Mappings for older indices will continue to work but emit a deprecation warning.
Impact: The enabled setting for _field_names should be removed from templates and mappings. Disabling _field_names is not necessary because it no longer carries a large index overhead.
`The boost parameter on field mappings has been removed.` 字段映射上的参数boost已被移除
Details: Index-time boosts have been deprecated since the 5x line, but it was still possible to declare field-specific boosts in the mappings. This is now removed completely. Indexes built in 7x that contain mapping boosts will emit warnings, and the boosts will have no effect in 8.0. New indexes will not permit boosts to be set in their mappings at all.
Impact: The boost setting should be removed from templates and mappings. Use boosts directly on queries instead.
`Java-time date formats replace joda-time formats.` Java 时间日期格式取代了 joda 时间格式
Details: In 7.0, Elasticsearch switched from joda time to java time for date-related parsing, formatting, and calculations. Indices created in 7.0 and later versions are already required to use mappings with java-time date formats. However, earlier indices using joda-time formats must be reindexed to use mappings with java-time formats.
Impact: For a detailed migration guide, see the Java time migration guide.
`Several geo_shape mapping parameters have been removed.` 几个geo_shape映射参数已移除
Details: The following geo_shape mapping parameters were deprecated in 6.6:
tree
tree_levels
strategy
distance_error_pct
These parameters have been removed in 8.0.0.
Impact: In 8.0, you can no longer create mappings that include these parameters. However, 7.x indices that use these mapping parameters will continue to work.
`The sparse_vector field data type has been removed.` 字段sparse_vector数据类型已移除
Details: The sparse_vector field type was deprecated in 7.6 and is now removed in 8.0. We have not seen much interest in this experimental field type, and don’t see a clear use case as it’s currently designed. If you have feedback or suggestions around sparse vector functionality, please let us know through GitHub or the discuss forums.
Impact: Discontinue use of the sparse_vector field data type. Requests containing a mapping for this field data type will return an error.
Packaging changes 包结构
`The layout of the data folder has changed.` 数据文件夹布局
Details: Each node’s data is now stored directly in the data directory set by the path.data setting, rather than in ${path.data}/nodes/0, because the removal of the node.max_local_storage_nodes setting means that nodes may no longer share a data path.
Impact: At startup, Elasticsearch will automatically migrate the data path to the new layout. This automatic migration will not proceed if the data path contains data for more than one node. You should move to a configuration in which each node has its own data path before upgrading.
If you try to upgrade a configuration in which there is data for more than one node in a data path then the automatic migration will fail and Elasticsearch will refuse to start. To resolve this you will need to perform the migration manually. The data for the extra nodes are stored in folders named ${path.data}/nodes/1, ${path.data}/nodes/2 and so on, and you should move each of these folders to an appropriate location and then configure the corresponding node to use this location for its data path. If your nodes each have more than one data path in their path.data settings then you should move all the corresponding subfolders in parallel. Each node uses the same subfolder (e.g. nodes/2) across all its data paths.
`The default Maxmind geoip databases have been removed.` 默认Maxmind geoip数据库被移除
Details: The default Maxmind geoip databases that shipped by default with Elasticsearch have been removed. These databases are out dated and stale and using these databases will likely result in incorrect geoip lookups.
By default since 7.13, these pre-packaged geoip databases were used in case no database were specified in the config directory or before the geoip downloader downloaded the geoip databases. When the geoip database downloader completed downloading the new databases then these pre-packaged databases were no longer used.
Impact: If the geoip downloader is disabled and no geoip databases are provided in the config directory of each ingest node then the geoip processor will no longer perform geoip lookups and tag these documents with the fact that the requested database is no longer available.
After a cluster has been started and before the geoip downloader has completed downloading the most up to data databases, the geoip processor will not perform any geoip lookups and tag documents that the requested database is not available. After the geoip downloader has completed downloading the most up to data databases then the geoip processor will function as normal. The window of time that the geoip processor can’t do geoip lookups after cluster startup should be very small.
Painless changes Painless脚本
`The JodaCompatibleZonedDateTime class has been removed.` JodaCompatibleZonedDateTime 被移除
Details: As a transition from Joda datetime to Java datetime, scripting used an intermediate class called JodaCompatibleZonedDateTime. This class has been removed and is replaced by ZonedDateTime. Any use of casting to a JodaCompatibleZonedDateTime or use of method calls only available in JodaCompatibleZonedDateTime in a script will result in a compilation error, and may not allow the upgraded node to start.
Impact: Before upgrading, replace getDayOfWeek with getDayOfWeekEnum().value in any scripts. Any use of getDayOfWeek expecting a return value of int will result in a compilation error or runtime error and may not allow the upgraded node to start.
The following JodaCompatibleZonedDateTime methods must be replaced using ZonedDateTime methods prior to upgrade:
getMillis() → toInstant().toEpochMilli()
getCenturyOfEra() → get(ChronoField.YEAR_OF_ERA) / 100
getEra() → get(ChronoField.ERA)
getHourOfDay() → getHour()
getMillisOfDay() → get(ChronoField.MILLI_OF_DAY)
getMillisOfSecond() → get(ChronoField.MILLI_OF_SECOND)
getMinuteOfDay() → get(ChronoField.MINUTE_OF_DAY)
getMinuteOfHour() → getMinute()
getMonthOfYear() → getMonthValue()
getSecondOfDay() → get(ChronoField.SECOND_OF_DAY)
getSecondOfMinute() → getSecond()
getWeekOfWeekyear() → get(IsoFields.WEEK_OF_WEEK_BASED_YEAR)
getWeekyear() → get(IsoFields.WEEK_BASED_YEAR)
getYearOfCentury() → get(ChronoField.YEAR_OF_ERA) % 100
getYearOfEra() → get(ChronoField.YEAR_OF_ERA)
toString(String) → a DateTimeFormatter
toString(String, Locale) → a DateTimeFormatter
Plugin changes 插件
`The S3, GCS and Azure repository plugins are now included in Elasticsearch` S3、GCS 和 Azure 存储库插件现已包含在 Elasticsearch 中
Details: In previous versions of Elasticsearch, in order to register a snapshot repository backed by Amazon S3, Google Cloud Storage (GCS) or Microsoft Azure Blob Storage, you first had to install the corresponding Elasticsearch plugin, for example repository-s3. These plugins are now included in Elasticsearch by default.
Impact: You no longer need to install the following plugins, and not should attempt to do so.
repository-azure
repository-gcs
repository-s3
Elasticsearch and the elasticsearch-plugin CLI tool have been changed to tolerate attempted installation and removal of these plugins in order to avoid breaking any existing automation. In the future, attempting to install these plugins will be an error.
Specifically, the elasticsearch-plugin CLI tool will not fail if you attempt to install any of the above plugins, and will instead print a warning and skip the plugins. If any of these plugins are already installed, for example because you installed them when running an older version of Elasticsearch, then you can still remove them with elasticsearch-plugin. Attempting to remove them if they are not installed will succeed but print a warnings.
If you run Elasticsearch using Docker and you are managing plugins using a configuration file, then when Elasticsearch first starts after you upgrade it, it will remove the above plugins if they already installed. If any of these plugins are specified in your configuration file, Elasticsearch will ignore them and emit a warning log message.
`Third party plugins can no longer intercept REST requests (RestHandlerWrapper)` 第三方插件无法再拦截 REST 请求
Details: In previous versions of Elasticsearch, third-party plugins could implement the getRestHandlerWrapper method to intercept all REST requests to the node. A common use of this feature was to implement custom security plugins to replace the built-in security features. This extension point is no longer available to third-party plugins.
Impact: Some third-party plugins that were designed to work with earlier versions of Elasticsearch might not be compatible with Elasticsearch version 8.0 or later.
If you depend on any plugins that are not produced and supported by Elastic, check with the plugin author and ensure that the plugin is available for your target version of Elasticsearch before upgrading.
REST API changes
`REST API endpoints containing _xpack have been removed.` 包含的 REST API 端点_xpack已移除
Details: In 7.0, we deprecated REST endpoints that contain _xpack in their path. These endpoints are now removed in 8.0. Each endpoint that was deprecated and removed is replaced with a new endpoint that does not contain _xpack. As an example, /{index}/_xpack/graph/_explore is replaced by /{index}/_graph/explore.
Impact: Use the replacement REST API endpoints. Requests submitted to the _xpack API endpoints will return an error.
Compatibility
When rest-api-compatibility is requested, any requests that include the`_xpack` prefix are rerouted to the corresponding URL without the _xpack prefix.
`REST API endpoints containing mapping types have been removed.` 包含映射类型的 REST API 端点已移除
Details: Mapping types have been removed. API endpoints that contain a mapping type have also been removed. Use a typeless endpoint instead.
API | Typed API endpoint | Typeless API endpoint |
---|---|---|
Bulk | <target>/<type>/_bulk | <target>/_bulk |
Count | <target>/<type>/_count | <target>/_count |
Delete | <index>/<type>/<_id> | <index>/_doc/<_id> |
Delete by query | <target>/<type>/_delete_by_query | <target>/_delete_by_query |
Explain | <index>/<type>/<_id>/_explain | <index>/_explain/<_id> |
Get | <index>/<type>/<_id> | <index>/_doc/<_id> |
Get | <index>/<type>/<_id>/_source | <index>/_source/<_id> |
Get field mapping | _mapping/<type>/field/<field> | _mapping/field/<field> |
Get field mapping | <target>/_mapping/<type>/field/<field> | <target>/_mapping/field/<field> |
Get mapping | _mapping/<type> | _mapping or <target>/_mapping |
Get mapping | <target>/<type>/_mapping | <target>/_mapping |
Get mapping | <target>/_mapping/<type> | <target>/_mapping |
Graph explore | <index>/<type>/_graph/explore | <index>/_graph/explore |
Index | <target>/<type>/<_id>/_create | <target>/_create/<_id> |
Index | <target>/<type> | <target>/_doc |
Index | <target>/<type>/<_id> | <target>/_doc/<_id> |
Multi get | <index>/<type>/_mget | <index>/_mget |
Multi search | <target>/<type>/_msearch | <target>/_msearch |
Multi search template | <target>/<type>/_msearch/template | <target>/_msearch/template |
Multi term vectors | <index>/<type>/_mtermvectors | <index>/_mtermvectors |
Rollup search | <target>/<type>/_rollup_search | <target>/_rollup_search |
Search | <target>/<type>/_search | <target>/_search |
Search template | <target>/<type>/_search/template | <target>/_search/template |
Term vectors | <index>/<mapping_type>/<_id>/_termvectors | <index>/_termvectors<_id> |
Term vectors | <index>/<mapping_type>/_termvectors | <index>/_termvectors |
Update | <index>/<type>/<_id>/_update | <index>/_update/<_id> |
Update by query | <target>/<type>/_update_by_query | <target>/_update_by_query |
Update mapping | <target>/<type>/_mapping | <target>/_mapping |
Update mapping | <target>/_mapping/<type> | <target>/_mapping |
Update mapping | _mapping/<type> | <target>/_mapping |
Validate | <target>/<type>/_validate/query | <target>/_validate/query |
Impact: Update your application to use typeless REST API endpoints. Requests to endpoints that contain a mapping type will return an error.
Compatibility
When rest-api-compatibility is requested, if a request includes a custom mapping type it is ignored. The request is rerouted to the corresponding typeless URL. Custom mapping types in request bodies and type related HTTP parameters are ignored, and responses, where warranted, include _type : _doc.
`Cross-cluster search (CCS) is now only backward-compatible with the previous minor version.` 跨集群搜索 (CCS) 现在仅向后兼容之前的次要版本。
Details: In 8.0+, Elastic supports searches from a local cluster to a remote cluster running:
The previous minor version.
The same version.
A newer minor version in the same major version.
Elastic also supports searches from a local cluster running the last minor version of a major version to a remote cluster running any minor version in the following major version. For example, a local 7.17 cluster can search any remote 8.x cluster.
兼容表查看源连接 rest_api_changes
For the EQL search API, the local and remote clusters must use the same Elasticsearch version if they have versions prior to 7.17.7 (included) or prior to 8.5.1 (included).
For example, a local 8.0 cluster can search a remote 7.17 or any remote 8.x cluster. However, a search from a local 8.0 cluster to a remote 7.16 or 6.8 cluster is not supported.
Previously, we also supported searches on remote clusters running:
Any minor version of the local cluster’s major version.
The last minor release of the previous major version.
However, such searches can result in undefined behavior.
Impact: If you only run cross-cluster searches on remote clusters using the same or a newer version, no changes are needed.
If you previously searched remote clusters running an earlier version of Elasticsearch, see Ensure cross-cluster search support for recommended solutions.
A cross-cluster search using an unsupported configuration may still work. However, such searches aren’t tested by Elastic, and their behavior isn’t guaranteed.
`The terms aggregation no longer supports the _term order key.` terms聚合不再支持_term排序
Details: The terms aggregation no longer supports the _term key in order values. To sort buckets by their term, use _key instead.
Impact: Discontinue use of the _term order key. Requests that include a _term order key will return an error.
Compatibility
When rest-api-compatibility is requested, the _term order is ignored and key is used instead.
`The date_histogram aggregation no longer supports the _time order key.` date_histogram聚合不再支持_time排序
Details: The date_histogram aggregation no longer supports the _time key in order values. To sort buckets by their key, use _key instead.
Impact: Discontinue use of the _time order key. Requests that include a _time order key will return an error.
Compatibility
When rest-api-compatibility is requested, the _time order is ignored and _key is used instead.
`The moving_avg aggregation has been removed.` moving_avg 聚合被移除
Details: The moving_avg aggregation was deprecated in 6.4 and has been removed. To calculate moving averages, use the moving_fn aggregation instead.
Impact: Discontinue use of the moving_avg aggregation. Requests that include the moving_avg aggregation will return an error.
`The percentiles aggregation’s percents parameter no longer supports duplicate values.` percentiles聚合的percents参数不再支持重复值。
Details: If you specify the percents parameter with the percentiles aggregation, its values must be unique. Otherwise, an exception occurs.
Impact: Use unique values in the percents parameter of the percentiles aggregation. Requests containing duplicate values in the percents parameter will return an error.
`The date_histogram aggregation’s interval parameter is no longer valid.` date_histogram聚合的interval参数不再有效。
Details: It is now an error to specify the interval parameter to the date_histogram aggregation or the https://www.elastic.co/guide/en/elasticsearch/reference/master/search-aggregations-bucket-composite-aggregation.html#_date_histogram composite
date_histogram source. Instead, please use either `calendar_interval` or `fixed_interval` as appropriate.
Impact: Uses of the interval parameter in either the date_histogram aggregation or the date_histogram composite source will now generate an error. Instead please use the more specific fixed_interval or calendar_interval parameters.
Compatibility
When rest-api-compatibility is requested, the interval parameter is adapted to either a fixed or calendar interval.
`The nGram and edgeNGram token filter names have been removed.` nGram和edgeNGram的token filter被移除
Details: The nGram and edgeNGram token filter names that have been deprecated since version 6.4 have been removed. Both token filters can only be used by their alternative names ngram and edge_ngram since version 7.0.
Impact: Use the equivalent ngram and edge_ngram token filters. Requests containing the nGram and edgeNGram token filter names will return an error.
`The nGram and edgeNGram tokenizer names have been removed.` nGram和edgeNGram的tokenizer被移除
Details: The nGram and edgeNGram tokenizer names haven been deprecated with 7.6 and are no longer supported on new indices. Mappings for indices created after 7.6 will continue to work but emit a deprecation warning. The tokenizer name should be changed to the fully equivalent ngram or edge_ngram names for new indices and in index templates.
Impact: Use the ngram and edge_ngram tokenizers. Requests to create new indices using the nGram and edgeNGram tokenizer names will return an error.
`The in_flight_requests stat has been renamed inflight_requests in logs and diagnostic APIs.` in_flight_requests 被重命名
Details: The name of the in flight requests circuit breaker in log output and diagnostic APIs (such as the node stats API) changes from in_flight_requests to inflight_requests to align it with the name of the corresponding settings.
Impact: Update your workflow and applications to use the inflight_requests stat in place of in_flight_requests.
`The voting configuration exclusions API endpoint has changed.` 排除投票的配置 API已更改
Details: The `POST /_cluster/voting_config_exclusions/{node_filter}` API has been removed in favour of `POST /_cluster/voting_config_exclusions?node_names=...` and` POST /_cluster/voting_config_exclusions?node_ids=...` which allow you to specify the names or IDs of the nodes to exclude.
Impact: Use `POST /_cluster/voting_config_exclusions?node_ids=...` and specify the nodes to exclude instead of using a node filter. Requests submitted to the `/_cluster/voting_config_exclusions/{node_filter}` endpoint will return an error.
`Remote system indices are not followed automatically if they match an auto-follow pattern.` 如果远程系统索引与自动跟踪模式匹配,则不会自动追踪。
Details: Remote system indices matching an auto-follow pattern won’t be configured as a follower index automatically.
Impact: Explicitly create a follower index to follow a remote system index if that’s the wanted behaviour.
`The EQL wildcard function has been removed.` EQL中wildcard功能已被移除
Details: The wildcard function was deprecated in Elasticsearch 7.13.0 and has been removed.
Impact: Use the like or regex keywords instead.
`The ILM freeze action is now a no-op.` 索引生命周期管理(ILM)冻结(freeze)操作现在是无操作。
Details: The ILM freeze action is now a no-op and performs no action on the index, as the freeze API endpoint has been removed in 8.0.
Impact: Update your ILM policies to remove the freeze action from the cold phase.
`Additional validation for ILM policies.` 索引生命周期管理(ILM)策略的添加验证
Details: Creating or updating an ILM policy now requires that any referenced snapshot repositories and SLM policies exist.
Impact: Update your code or configuration management to ensure that repositories and SLM policies are created before any policies that reference them.
`The deprecated _upgrade API has been removed.` 已弃用的_upgrade API 已移除
Details: Previously, the _upgrade API upgraded indices from the previous major version to the current version. The _reindex API should be used instead for that purpose.
Impact: Requests made to the old _upgrade API will return an error.
`The deprecated freeze index API has been removed.` 已弃用的冻结索引 API 已移除
Details: The freeze index API (POST /<index>/_freeze) has been removed. Improvements in heap memory usage have eliminated the reason to freeze indices. You can still unfreeze existing frozen indices using the unfreeze index API. For some use cases, the frozen tier may be a suitable replacement for frozen indices. See data tiers for more information.
Impact: Requests made to the old freeze index API will return an error.
`The force merge API’s max_num_segments and only_expunge_deletes parameters cannot both be specified in the same request.` 不能在同一请求中同时指定强制合并API参数 max_num_segments 和 only_expunge_deletes
Details: Previously, the force merge API allowed the parameters only_expunge_deletes and max_num_segments to be set to a non default value at the same time. But the max_num_segments was silently ignored when only_expunge_deletes is set to true, leaving the false impression that it has been applied.
Impact: When using the force merge API, do not specify values for both the max_num_segments and only_expunge_deletes parameters. Requests that include values for both parameters will return an error.
`The create or update index template API’s template parameter has been removed.` 创建或更新索引模板 API 的template参数已被删除。
Details: In 6.0, we deprecated the template parameter in create or update index template requests in favor of using index_patterns. Support for the template parameter is now removed in 8.0.
Impact: Use the create or update index template API's index_patterns parameter. Requests that include the template parameter will return an error.
Compatibility
When rest-api-compatibility is requested, the template parameter is mapped to index_patterns.
`Synced flush has been removed.` 同步刷新已被删除
Details: Synced flush was deprecated in 7.6 and is removed in 8.0. Use a regular flush instead as it has the same effect as a synced flush in 7.6 and later.
Impact: Use the flush API. Requests to the `/<index>/flush/synced` or `/flush/synced endpoints` will return an error.
Compatibility
When rest-api-compatibility is requested, the request to synced flush is routed to the equivalent non-synced flush URL.
`The default for the ?wait_for_active_shards parameter on the close index API has changed.` 关闭索引 API 上的参数`?wait_for_active_shards`默认值已更改
Details: When closing an index in earlier versions, by default Elasticsearch would not wait for the shards of the closed index to be properly assigned before returning. From version 8.0 onwards the default behaviour is to wait for shards to be assigned according to the index.write.wait_for_active_shards index setting.
Impact: Accept the new behaviour, or specify ?wait_for_active_shards=0 to preserve the old behaviour if needed.
`The index stats API’s types query parameter has been removed.` 索引统计 API 的types查询参数已被删除
Details: The index stats API’s types query parameter has been removed. Previously, you could combine types with the indexing query parameter to return indexing stats for specific mapping types. Mapping types have been removed in 8.0.
Impact: Discontinue use of the types query parameter. Requests that include the parameter will return an error.
Compatibility
When rest-api-compatibility is requested, the types query parameter is ignored and stats are returned for the entire index.
`The user_agent ingest processor’s ecs parameter has no effect.` user_agent 摄取处理器的ecs参数没有影响
Details: In 7.2, we deprecated the ecs parameter for the user_agent ingest processor. In 8.x, the user_agent ingest processor will only return Elastic Common Schema (ECS) fields, regardless of the ecs value.
Impact: To avoid deprecation warnings, remove the parameter from your ingest pipelines. If a pipeline specifies an ecs value, the value is ignored.
`The include_type_name query parameter has been removed.` include_type_name的查询参数已被删除
Details: The include_type_name query parameter has been removed from the index creation, index template, and mapping APIs. Previously, you could set include_type_name to true to indicate that requests and responses should include a mapping type name. Mapping types have been removed in 8.x.
Impact: Discontinue use of the include_type_name query parameter. Requests that include the parameter will return an error.
Compatibility
When rest-api-compatibility is requested, the include_type_name query parameter is ignored and any custom mapping types in the request are removed.
`Reindex from remote now re-encodes URL-encoded index names.` 从远程重新索引现在会重新编码URL-encoded的索引名字
Details: Reindex from remote would previously allow URL-encoded index names and not re-encode them when generating the search request for the remote host. This leniency has been removed such that all index names are correctly encoded when reindex generates remote search requests.
Impact: Specify unencoded index names for reindex from remote requests.
`In the reindex, delete by query, and update by query APIs, the size parameter has been renamed.` 在reindex、delete_by_query和update_by_query API 中,参数size已重命名。
Details: Previously, a _reindex request had two different size specifications in the body:
Outer level, determining the maximum number of documents to process
Inside the source element, determining the scroll/batch size.
The outer level size parameter has now been renamed to max_docs to avoid confusion and clarify its semantics.
Similarly, the size parameter has been renamed to max_docs for _delete_by_query and _update_by_query to keep the 3 interfaces consistent.
Impact: Use the replacement parameters. Requests containing the size parameter will return an error.
Compatibility
When rest-api-compatibility is requested, the size parameter is mapped to the max_docs parameter.
`The update by query API now rejects unsupported script fields.` update_by_query API 对不支持的script字段返回错误
Details: An update by query API request that includes an unsupported field in the script object now returns an error. Previously, the API would silently ignore these unsupported fields.
Impact: To avoid errors, remove unsupported fields from the script object.
`The cat node API’s local query parameter has been removed.` `_cat/nodes`的参数`?local`已移除
Details: The `?local` parameter to the `GET _cat/nodes` API was deprecated in 7.x and is rejected in 8.0. This parameter caused the API to use the local cluster state to determine the nodes returned by the API rather than the cluster state from the master, but this API requests information from each selected node regardless of the ?local parameter which means this API does not run in a fully node-local fashion.
Impact: Discontinue use of the ?local query parameter. cat node API requests that include this parameter will return an error.
`The cat shard API’s local query parameter has been removed.` `_cat/shards`的参数`?local`数已移除
Details: The ?local parameter to the GET `_cat/shards` API was deprecated in 7.x and is rejected in 8.0. This parameter caused the API to use the local cluster state to determine the nodes returned by the API rather than the cluster state from the master, but this API requests information from each selected node regardless of the ?local parameter which means this API does not run in a fully node-local fashion.
Impact: Discontinue use of the ?local query parameter. cat shards API requests that include this parameter will return an error.
`The cat indices API’s local query parameter has been removed.` `_cat/indices`的参数`?local`数已移除
Details: The ?local parameter to the GET _cat/indices API was deprecated in 7.x and is rejected in 8.0. This parameter caused the API to use the local cluster state to determine the nodes returned by the API rather than the cluster state from the master, but this API requests information from each selected node regardless of the ?local parameter which means this API does not run in a fully node-local fashion.
Impact: Discontinue use of the ?local query parameter. cat indices API requests that include this parameter will return an error.
`The get field mapping API’s local query parameter has been removed.` `<index_name>/_mapping`的参数`?local`数已移除
Details: The local parameter for get field mapping API was deprecated in 7.8 and is removed in 8.0. This parameter is a no-op and field mappings are always retrieved locally.
Impact: Discontinue use of the local query parameter. get field mapping API requests that include this parameter will return an error.
`Post data to jobs API is deprecated.` post data 数据到job api 被遗弃
Details: The machine learning post data to jobs API is deprecated starting in 7.11.0 and will be removed in a future major version.
Impact: Use datafeeds instead.
`The job_id property of the Update datafeeds API has been removed.` 通过job_id属性更新datafeed的api被移除
Details: The ability to update a job_id in a datafeed was deprecated in 7.3.0. and is removed in 8.0.
Impact: It is not possible to move datafeeds between anomaly detection jobs.
`Create repository and delete repository API’s return 409 status code when a repository is in use instead of 500.` 创建资源和删除资源接口返回409状态码,替代之前的500状态码
Details: The Create or update snapshot repository API and Delete snapshot repository API return 409 status code when the request is attempting to modify an existing repository that’s in use instead of status code 500.
Impact: Update client code that handles creation and deletion of repositories to reflect this change.
`The allow_no_datafeeds property has been removed from machine learning APIs.` 机器学习api移除了allow_no_datafeeds属性
Details: The allow_no_datafeeds property was deprecated in the cat datafeeds, get datafeeds, get datafeed statistics, and stop datafeeds APIs in 7.10.0.
Impact: Use allow_no_match instead.
``The allow_no_jobs property has been removed from machine learning APIs.` 机器学习api移除了allow_no_jobs属性`
Details: The allow_no_jobs property was deprecated in the cat anomaly detectors, close anomaly detection jobs, get anomaly detection jobs, get anomaly detection job statistics, and get overall buckets APIs in 7.10.0.
Impact: Use allow_no_match instead.
`The StartRollupJob endpoint now returns a success status if a job has already started.` `StartRollupJob endpoint` 如果job已经在运行将返回成功状态
Details: Previously, attempting to start an already-started rollup job would result in a 500 InternalServerError: Cannot start task for Rollup Job
[job] because state was [STARTED] exception.
Now, attempting to start a job that is already started will just return a successful 200 OK: started response.
Impact: Update your workflow and applications to assume that a 200 status in response to attempting to start a rollup job means the job is in an actively started state. The request itself may have started the job, or it was previously running and so the request had no effect.
`Stored scripts no longer support empty scripts or search templates.` 保存脚本不支持空脚本和搜索模板
Details: The create or update stored script API's source parameter cannot be empty.
Impact: Before upgrading, use the delete stored script API to delete any empty stored scripts or search templates. In 8.0, Elasticsearch will drop any empty stored scripts or empty search templates from the cluster state. Requests to create a stored script or search template with an empty source will return an error.
`The create or update stored script API’s code parameter has been removed.` 创建和修改脚本的api中code参数被移除
Details: The create or update stored script API's code parameter has been removed. Use the source parameter instead.
Impact: Discontinue use of the code parameter. Requests that include the parameter will return an error.
`Searches on the _type field are no longer supported.` search中_type被弃用
Details: In 8.x, the _type metadata field has been removed. Elasticsearch now handles a search on the _type field as a search on a non-existent field. A search on a non-existent field matches no documents, regardless of the query string.
In 7.x, a search for _doc in the _type field would match the same documents as a match_all query.
Impact: Remove queries on the _type field from your search requests and search templates. Searches that include these queries may return no results.
`The multi search API now parses an empty first line as action metadata in text files.` 多个搜索 API 现在将文本文件中空的第一行解析为的操作元数据
Details: The multi search API now parses an empty first line as empty action metadata when you provide a text file as the request body, such as when using curl’s --data-binary flag.
The API no longer supports text files that contain:
An empty first line followed by a line containing only {}.
An empty first line followed by another empty line.
Impact: Don’t provide an unsupported text file to the multi search API. Requests that include an unsupported file will return an error.
`The unmapped_type: string sort option has been removed.` 排序unmapped_type: string选项已被删除
Details: Search requests no longer support the unmapped_type: string sort option. Instead, use unmapped_type: keyword to handle an unmapped field as if it had the keyword field type but ignore its values for sorting.
Impact: Discontinue use of unmapped_type: string. Search requests that include the unmapped_type: string sort option will return shard failures.
`Aggregating and sorting on _id is disallowed by default.` 聚合和排序中_id默认情况下不允许
Details: Previously, it was possible to aggregate and sort on the built-in _id field by loading an expensive data structure called fielddata. This was deprecated in 7.6 and is now disallowed by default in 8.0.
Impact: Aggregating and sorting on _id should be avoided. As an alternative, the _id field’s contents can be duplicated into another field with docvalues enabled (note that this does not apply to auto-generated IDs).
`The common query has been removed.` `common query`被移除
Details: The common query, deprecated in 7.x, has been removed in 8.0. The same functionality can be achieved by the match query if the total number of hits is not tracked.
Impact: Discontinue use of the common query. Search requests containing a common query will return an error.
`The cutoff_frequency parameter has been removed from the match and multi_match query.` 该cutoff_frequency参数已从`match`和`multi_match`查询中删除
Details: The cutoff_frequency parameter, deprecated in 7.x, has been removed in 8.0 from match and multi_match queries. The same functionality can be achieved without any configuration provided that the total number of hits is not tracked.
Impact: Discontinue use of the cutoff_frequency parameter. Search requests containing this parameter in a match or multi_match query will return an error.
`The nested_filter and nested_path properties have been removed from the search API’s sort request body parameter.` 请求正文参数nested_filter和nested_path属性已从搜索 API中删除
Details: The nested_filter and nested_path options, deprecated in 6.x, have been removed in favor of the nested context.
Impact: Discontinue use of the sort request body parameter’s nested_filter and nested_path properties. Requests containing these properties will return an error.
`Search and get requests are now routed to shards using adaptive replica selection by default.` 现在,默认情况下,搜索和获取请求将使用自适应副本选择路由到分片
Details: Elasticsearch will no longer prefer using shards in the same location (with the same awareness attribute values) to process _search and _get requests. Adaptive replica selection (activated by default in this version) will route requests more efficiently using the service time of prior inter-node communications.
Impact: No action needed.
`Vector functions using (query, doc['field']) are no longer supported.` 向量函数(query, doc['field'])不再支持使用。
Details:The vector functions of the form function(query, doc['field']) were deprecated in 7.6, and are now removed in 8.x. The form function(query, 'field') should be used instead. For example, cosineSimilarity(query, doc['field']) is replaced by cosineSimilarity(query, 'field').
Impact: Use the function(query, 'field') form. Discontinue use of the function(query,
doc['field']) form. Requests containing the function(query,
doc['field']) form will return an error.
`The search API’s indices_boost request body parameter no longer accepts object values.` 搜索api中请求体参数indices_boost不在支持object值
Details:The indices_boost option in the search request used to accept the boosts both as an object and as an array. The object format has been deprecated since 5.2 and is now removed in 8.0.
Impact: Use only array values in the indices_boost parameter. Requests containing an object value in the indices_boost parameter will return an error.
`The search API’s use_field_mapping request body parameter has been removed.` 搜索api中 请求体参数use_field_mapping被弃用
Details:In 7.0, we began formatting docvalue_fields by default using each field’s mapping definition. To ease the transition from 6.x, we added the format option use_field_mapping. This parameter was deprecated in 7.0, and is now removed in 8.0.
Impact: Discontinue use of the use_field_mapping request body parameter. Requests containing this parameter will return an error.
Compatibility
When rest-api-compatibility is requested, the use_field_mapping parameter is ignored.
`The search API’s from request body and url parameter cannot be negative.` 搜索api中 请求体参数from不能为负值
Details:Search request used to accept -1 as a from in the search body and the url, treating it as the default value of 0. Other negative values got rejected with an error already. We now also reject -1 as an invalid value.
Impact: Change any use of -1 as from parameter in request body or url parameters by either setting it to 0 or omitting it entirely. Requests containing negative values will return an error.
`Range queries on date fields treat numeric values alwas as milliseconds-since-epoch.` Range查询如果是数字会现在被认为是milliseconds-since-epoch(毫秒时间戳)
Details:Range queries on date fields used to misinterpret small numbers (e.g. four digits like 1000) as a year when no additional format was set, but would interpret other numeric values as milliseconds since epoch. We now treat all numeric values in absence of a specific format parameter as milliseconds since epoch. If you want to query for years instead, with a missing format you now need to quote the input value (e.g. "1984").
Impact: If you query date fields without a specified format, check if the values in your queries are actually meant to be milliseconds-since-epoch and use a numeric value in this case. If not, use a string value which gets parsed by either the date format set on the field in the mappings or by strict_date_optional_time by default.
`The geo_bounding_box query’s type parameter has been removed.` geo_bounding_box 查询中type被移除
Details: The geo_bounding_box query’s type parameter was deprecated in 7.14.0 and has been removed in 8.0.0. This parameter is a no-op and has no effect on the query.
Impact: Discontinue use of the type parameter. geo_bounding_box queries that include this parameter will return an error.
`The type query has been removed.` type查询被移除
Details: The type query has been removed. Mapping types have been removed in 8.0.
Impact: Discontinue use of the type query. Requests that include the type query will return an error.
`The kibana_user role has been renamed kibana_admin.` kibana_user被改名为kibana_admin
Details: Users who were previously assigned the kibana_user role should instead be assigned the kibana_admin role. This role grants the same set of privileges as kibana_user, but has been renamed to better reflect its intended use.
Impact: Assign users with the kibana_user role to the kibana_admin role. Discontinue use of the kibana_user role.
`For snapshot and SLM APIs, the indices parameter no longer resolves to system indices or system data streams.` 对于`snapshot and SLM APIs`,indices参数对于系统索引或系统数据流不在解析
Details: For snapshot and SLM APIs, the indices parameter no longer resolves to system indices or system data streams. Feature states are now the only way to back up and restore system indices or system data streams from a snapshot.
You can no longer use the indices parameter for the create SLM policy API or the create snapshot API to include a system index in a snapshot. To back up a system index, use the include_global_state and feature_states parameters to include the corresponding feature state instead. By default, the include_global_state and feature_states parameters include all system indices.
Similarly, you can no longer use the restore snapshot API's indices parameter to restore a system index from a snapshot. To restore a system index, use the include_global_state and feature_states parameters to restore the corresponding feature state instead. By default, the include_global_state and feature_states parameters don’t restore any system indices.
Impact: If you previously used the indices parameter to back up or restore system indices, update your SLM policies and application to use the include_global_state and feature_states parameters instead.
An SLM policy that explicitly specifies a system index in the indices parameter will fail to create snapshots. Similarly, a create snapshot API or restore snapshot API request that explicitly specifies a system index in the indices parameter will fail and return an error. If the indices value includes a wildcard (*) pattern, the pattern will no longer match system indices.
`Snapshots compress metadata files by default.` 默认会压缩快照的元数据文件
Details: Previously, the default value for compress was false. The default has been changed to true.
This change will affect both newly created repositories and existing repositories where compress=false has not been explicitly specified.
Impact: Update your workflow and applications to assume a default value of true for the compress parameter.
`S3 snapshot repositories now use a DNS-style access pattern by default.` 默认s3的快照资源现在使用DNS-style访问模式
Details: Starting in version 7.4, s3 snapshot repositories no longer use the now-deprecated path-style access pattern by default. In versions 7.0, 7.1, 7.2 and 7.3 s3 snapshot repositories always used the path-style access pattern. This is a breaking change for deployments that only support path-style access but which are recognized as supporting DNS-style access by the AWS SDK. This breaking change was made necessary by AWS’s announcement that the path-style access pattern is deprecated and will be unsupported on buckets created after September 30th 2020.
Impact: If your deployment only supports path-style access and is affected by this change then you must configure the S3 client setting path_style_access to true.
`Restore requests no longer accept settings.` 恢复请求不再接受设置
Details: In earlier versions, you could pass both settings and index_settings in the body of a restore snapshot request, but the settings value was ignored. The restore snapshot API now rejects requests that include a settings value.
Impact: Discontinue use of the settings parameter in restore snapshot request. Requests that include these parameters will return an error.
`The repository stats API has been removed.` 资源统计api被移除
Details: The repository stats API has been removed. We deprecated this experimental API in 7.10.0.
Impact: Use the repositories metering APIs instead.
`Watcher history now writes to a hidden data stream.` 观察者历史记录现在写入隐藏的数据流
Details: In 8.x, Elasticsearch writes Watcher history to a hidden .watcher-history-<index-template-version> data stream. Previously, Elasticsearch wrote Watcher history to hidden .watcher-history-<index-template-version>-<yyyy-MM-dd> indices.
Impact: Update your requests to target the Watcher history data stream. For example, use the .watcher-history-* wildcard expression. Requests that specifically target non-existent Watcher history indices may return an error.
`HTTP Status code has changed for the Cluster Health API in case of a server timeout.` 在服务器超时的情况下,集群运行状况 API 的 HTTP 状态代码已更改。
Details: The cluster health API includes options for waiting for certain health conditions to be satisfied. If the requested conditions are not satisfied within a timeout then Elasticsearch will send back a normal response including the field "timed_out": true. In earlier versions it would also use the HTTP response code 408 Request timeout if the request timed out, and 200
OK otherwise. The 408 Request timeout response code is not appropriate for this situation, so from version 8.0.0 Elasticsearch will use the response code 200 OK for both cases.
Impact: To detect a server timeout, check the timed_out field of the JSON response.
SQL JDBC changes SQL JDBC
`JDBC driver returns geometry objects as well-known-text string instead of org.elasticsearch.geo objects.`
Details: To reduce the dependency of the JDBC driver onto Elasticsearch classes, the JDBC driver returns geometry data as strings using the WKT (well-known text) format instead of classes from the org.elasticsearch.geometry. Users can choose the geometry library desired to convert the string representation into a full-blown objects either such as the elasticsearch-geo library (which returned the object org.elasticsearch.geo as before), jts or spatial4j.
Impact: Before upgrading, replace any org.elasticsearch.geo classes on the ResultSet#getObject or ResultSet#setObject Elasticsearch JDBC driver with their WKT representation by simply calling toString or org.elasticsearch.geometry.utils.WellKnownText#toWKT/fromWKT methods.
This change does NOT impact users that do not use geometry classes.
System requirement changes 系统要求
`Several EOL operating systems are no longer supported.` 部分操作系统不在支持
Details: The following operating systems have reached their end of life and are no longer supported by Elasticsearch:
Amazon Linux
CentOS 6
Debian 8
openSUSE Leap 42
Oracle Enterprise Linux 6
Ubuntu 16.04
We’ve also removed support for SysV init. No supported operating systems use the SysV init process.
``
Details: Ensure your nodes use a supported operating system. Running Elasticsearch on an unsupported operating system can result in unexpected errors or failures.
`Java 17 is required.` 要求Java17
Details: Java 17 or higher is now required to run Elasticsearch and any of its command line tools.
Impact: Use Java 17 or higher. Attempts to run Elasticsearch 8.0 using earlier Java versions will fail.
There is not yet a FIPS-certified security module for Java 17 that you can use when running Elasticsearch 8.0 in FIPS 140-2 mode. If you run in FIPS 140-2 mode, you will either need to request an exception from your security organization to upgrade to Elasticsearch 8.0, or remain on Elasticsearch 7.x until Java 17 is certified.
`JAVA_HOME is no longer supported.` JAVA_HOME 不在支持
Details: JAVA_HOME is no longer supported to set the path for the JDK. Instead, use the bundled JDK (preferable), or set ES_JAVA_HOME.
Impact: Use the bundled JDK (preferable), or set ES_JAVA_HOME. JAVA_HOME will be ignored.
#### *Transform changes* Transform(统计图表)
`Transforms created in 7.4 or earlier versions must be upgraded.` 必须升级
Details: Early beta versions of transforms had configuration information in a format that is no longer supported.
Impact: Use the upgrade transforms API to fix your transforms. This upgrade does not affect the source or destination indices.
Migrating to 7.17
Packaging changes
`The Windows MSI installer package is no longer available.` Windows的MSI安装包不提供了
Deprecations
Cluster and node setting deprecations 集群和节点设置
`Deprecation for truststores with no trust entries` 弃用没有信任存储的信任实体
Details: The use of SSL truststores that do not contain any trusted entries has been deprecated. The various *.ssl.truststore.path settings (for example xpack.security.transport.ssl.truststore.path or xpack.http.ssl.truststore.path) can be used to configure a set of "trust anchors" for SSL certificate verification. In Elasticsearch version 7 and earlier, it was permitted to configure a truststore that did not contain any trust anchors (that is, it was empty, or it contained "private key" entries only). In Elasticsearch version 8 and above, a truststore.path without any trusted certificate entries is no longer accepted, and will cause an error. This configuration is now deprecated in Elasticsearch version 7.17
Impact: To avoid deprecation warnings, remove any SSL truststores that do not contain any trusted entries.
Mapping deprecations
`Camel case date formats are deprecated.` 驼峰式日期格式(yyyyMMdd)已弃用
Details: The use of camel case patterns on date formats is deprecated and will be removed in Elasticsearch 8.0.0.
The corresponding snake case pattern should be used instead.
Impact: To avoid deprecation warnings, discontinue use of the camel case pattern.
Migrating to 7.16
临时设置 调整
Settings changes
`The cluster.routing.allocation.disk.threshold_enabled cluster setting is now operator only.` 集群节点的磁盘水位设置只能操作员
Details: Orchestrated environments such as Elasticsearch Service and Elastic Cloud Enterprise rely on the disk thresholds in Elasticsearch to operate the cluster correctly. For example the disk thresholds help determine how large an auto-scaled cluster should be. Disabling these disk thresholds prevents the orchestration system from working correctly, so starting in 7.16.0 the cluster.routing.allocation.disk.threshold_enabled setting is an operator only setting which cannot be changed by end-users.
Impact: Discontinue use of this setting in orchestrated environments such as Elasticsearch Service and Elastic Cloud Enterprise. Contact the environment administrator for help with disk space management if needed.
This change has no impact on users outside of orchestrated environments.
High Level REST Client changes 高级别的REST客户端调整(Java的客户端)
`The XContent API is renamed and breaks imports when upgrading.`
Details: The XContent library exported package is renamed from org.elasticsearch.common.xcontent to org.elasticsearch.xcontent. This change breaks imports when migrating to Elasticsearch 7.16.
Impact: If you’re maintaining a Java client application that uses the Java High Level Rest Client (HLRC), update any import statements in your Java source code that match:
import org.elasticsearch.common.xcontent.<class>
to instead use:
import org.elasticsearch.xcontent.<class>
This is the minimum required change. You must then recompile your source code to work with Elasticsearch 7.17.
A more permanent solution is to migrate from the (HLRC) entirely.
`The ignore_throttled parameter is deprecated and changes indices options sent to Elasticsearch` Java的客户端的参数`ignore_throttled`被弃用
Details: In #77864 the High Level Rest Client was changed to only send indices options if the request differed from the default request options. However, in some cases the default options for the HLRC request object inadvertently differ from the effective options of the Elasticsearch APIs, meaning that it is possible for the API response to differ.
Impact: If you use the HLRC and have a differing response due to indices options, you can update the options using the indicesOptions(...) method, as shown below:
// Previously:
highLevelClient.indices().exists(request, RequestOptions.DEFAULT);
// With indices options (change boolean options as needed):
final var requestWithOptions = request.indicesOptions(IndicesOptions.fromOptions(false, false, true, false));
highLevelClient.indices().exists(requestWithOptions, RequestOptions.DEFAULT);
A more permanent solution is to migrate from the (HLRC) entirely.
Deprecations
Security changes 安全
`The nameid_format SAML realm setting no longer has a default value.` nameid_format SAML realm 没有默认值了
Details: In SAML, Identity Providers (IdPs) can either be explicitly configured to release a NameID with a specific format, or configured to attempt to conform with the requirements of a Service Provider (SP). The SP declares its requirements in the NameIDPolicy element of a SAML Authentication Request. In Elasticsearch, the nameid_format SAML realm setting controls the NameIDPolicy value. Previously, the default value for nameid_format was urn:oasis:names:tc:SAML:2.0:nameid-format:transient. This setting created authentication requests that required the IdP to release NameID with a transient format. The default value has been removed, which means that Elasticsearch will create SAML Authentication Requests by default that don’t put this requirement on the IdP. If you want to retain the previous behavior, set nameid_format to urn:oasis:names:tc:SAML:2.0:nameid-format:transient.
Impact: If you currently don’t configure nameid_format explicitly, it’s possible that your IdP will reject authentication requests from Elasticsearch because the requests do not specify a NameID format (and your IdP is configured to expect one). This mismatch can result in a broken SAML configuration. If you’re unsure whether your IdP is explicitly configured to use a certain NameID format and you want to retain current behavior , try setting nameid_format to urn:oasis:names:tc:SAML:2.0:nameid-format:transient explicitly.
`The xpack.security.transport.ssl.enabled setting will be required to configure xpack.security.transport.ssl settings.` 启用ssl加了开关
Details: Configuring any SSL settings for xpack.security.transport.ssl without also configuring xpack.security.transport.ssl.enabled generates warnings in the deprecation log. In 8.0, this configuration will result in errors.
Impact: To avoid deprecation warnings, either:
- Explicitly set xpack.security.transport.ssl.enabled as false
- Discontinue use of other xpack.security.transport.ssl settings
If you want to enable SSL, follow the instructions to encrypt internode communications with TLS. As part of this configuration, explicitly set xpack.security.transport.ssl.enabled as true.
For example:
xpack.security.transport.ssl.enabled: true or false
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
`The xpack.security.http.ssl.enabled setting will be required to configure xpack.security.http.ssl settings.` 启用ssl还有开关
Details: Configuring any SSL settings for xpack.security.http.ssl without also configuring xpack.security.http.ssl.enabled generates warnings in the deprecation log. In 8.0, this configuration will result in errors.
Impact: To avoid deprecation warnings, either:
- Explicitly set xpack.security.http.ssl.enabled as false
- Discontinue use of other xpack.security.http.ssl settings
If you want to enable SSL, follow the instructions to encrypt HTTP client communications for Elasticsearch. As part of this configuration, explicitly set xpack.security.http.ssl.enabled as true.
For example:
xpack.security.http.ssl.enabled: true or false.
xpack.security.http.ssl.certificate: elasticsearch.crt
xpack.security.http.ssl.key: elasticsearch.key
xpack.security.http.ssl.certificate_authorities: [ "corporate-ca.crt" ]
`A xpack.security.transport.ssl certificate and key will be required to enable SSL for the transport interface.` ssl 还有传输层开关
Details: Enabling SSL for the transport interface without also configuring a certificate and key through use of the xpack.security.transport.ssl.keystore.path setting or the xpack.security.transport.ssl.certificate and xpack.security.transport.ssl.key settings generates warnings in the deprecation log. In 8.0, this configuration will result in errors.
Impact: If xpack.security.transport.ssl.enabled is set to true, provide a certificate and key using the xpack.security.transport.ssl.keystore.path setting or the xpack.security.transport.ssl.certificate and xpack.security.transport.ssl.key settings. If a certificate and key is not provided, Elasticsearch will generate warnings in the deprecation log.
`A xpack.security.http.ssl certificate and key will be required to enable SSL for the HTTP layer.` ssl 还有HTTP层的开关
Details: Enabling SSL for the HTTP layer without also configuring a certificate and key through use of the xpack.security.http.ssl.keystore.path setting or the xpack.security.http.ssl.certificate and xpack.security.http.ssl.key settings generates warnings in the deprecation log. In 8.0, this configuration will result in errors.
Impact: If xpack.security.http.ssl.enabled is set to true, provide a certificate and key using the xpack.security.http.ssl.keystore.path setting or the xpack.security.http.ssl.certificate and xpack.security.http.ssl.key settings. If a certificate and key is not provided, Elasticsearch will generate warnings in the deprecation log.
Index lifecycle management (ILM) changes 索引生命周期管理
`The ILM freeze action has been deprecated and will be a no-op in a future release.` ILMfreeze操作已被弃用,并且在未来版本中将无需操作。
Details: The ILM freeze action is now deprecated. This is because frozen indices provide no benefit given improvements in heap memory utilization. In 8.0 the freeze action will be a no-op and perform no action on the index, as the freeze API endpoint has been removed in 8.0.
Impact: Update your ILM policies to remove the freeze action from the cold phase.
Monitoring deprecations
`Collecting and shipping monitoring data with the Monitoring plugin has been deprecated` 监控插件收集和传送监控数据被弃用
Details: Using the Monitoring plugin to collect and ship monitoring data is deprecated. Metricbeat is the recommended method for collecting and shipping monitoring data to a monitoring cluster.
Impact: If you have previously configured legacy collection methods, you should migrate to using Metricbeat collection. Learn more about Collecting Elasticsearch monitoring data with Metricbeat.
The following settings are now deprecated:
xpack.monitoring.elasticsearch.collection.enabled
xpack.monitoring.collection.enabled
xpack.monitoring.collection.interval
xpack.monitoring.collection.indices
xpack.monitoring.collection.index.recovery.active_only
xpack.monitoring.collection.ccr.stats.timeout
xpack.monitoring.collection.enrich.stats.timeout
xpack.monitoring.collection.index.recovery.timeout
xpack.monitoring.collection.index.stats.timeout
xpack.monitoring.collection.ml.job.stats.timeout
xpack.monitoring.collection.node.stats.timeout
xpack.monitoring.collection.cluster.stats.timeout
xpack.monitoring.history.duration
xpack.monitoring.exporters.*.enabled
xpack.monitoring.exporters.*.type
xpack.monitoring.exporters.*.index.name.time_format
xpack.monitoring.exporters.*.index.template.master_timeout
xpack.monitoring.exporters.*.cluster_alerts.management.enabled
xpack.monitoring.exporters.*.cluster_alerts.management.blacklist
xpack.monitoring.exporters.*.host
xpack.monitoring.exporters.*.auth.username
xpack.monitoring.exporters.*.auth.secure_password
xpack.monitoring.exporters.*.bulk.timeout
xpack.monitoring.exporters.*.connection.timeout
xpack.monitoring.exporters.*.connection.read_timeout
xpack.monitoring.exporters.*.headers.*
xpack.monitoring.exporters.*.proxy.base_path
xpack.monitoring.exporters.*.sniff.enabled
xpack.monitoring.exporters.*.ssl.*
xpack.monitoring.exporters.*.wait_master.timeout
xpack.monitoring.migration.decommission_alerts
`The default alerts from the Monitoring plugin have been deprecated` 监控插件的默认警报已被弃用
Details: The default alerts from Monitoring plugin will no longer be installed by default in 8.0.0. The recommended method for alerting based on monitoring data is Kibana alerts.
Impact: If you have previously configured alerts from the Monitoring plugin, you should migrate to using Kibana alerts instead. Alerts installed from previous versions will continue to function until uninstalled. Learn more about Kibana alerts.
`The use_ingest setting on Monitoring exporter configurations is deprecated.` use_ingest不推荐使用“监控导出器配置”的设置。
Details: The xpack.monitoring.exporters.*.use_ingest property has been deprecated in 7.16.0 and will be removed in a release after 8.0.0. This parameter controls the creation of pipelines for monitoring indices. These pipelines currently have no function.
Impact: Discontinue the use of the xpack.monitoring.exporters.*.use_ingest setting as it will have no functionality in 8.0.0 and will eventually be removed.
`The index.pipeline.master_timeout setting on Monitoring HTTP exporter configurations is deprecated.` 使用“监控 HTTP 导出器配置”设置时,`index.pipeline.master_timeout`参数被弃用
Details: The xpack.monitoring.exporters.*.index.pipeline.master_timeout property has been deprecated in 7.16.0. This parameter sets the timeout when waiting for the remote Monitoring cluster to create pipelines. These pipelines for monitoring indices currently have no function and will be removed in a release after 8.0.0.
Impact: Discontinue the use of the xpack.monitoring.exporters.*.index.pipeline.master_timeout setting as it will have no functionality in 8.0.0 and will eventually be removed.
`The index.template.create_legacy_templates setting on Monitoring HTTP exporter configurations is deprecated.` 使用“监控 HTTP 导出器配置”设置时,`index.template.create_legacy_templates`参数被弃用
Details: The xpack.monitoring.exporters.*.index.template.create_legacy_templates property has been deprecated in 7.16.0. This parameter instructs the exporter to install the previous version of monitoring templates on the monitoring cluster. These older templates were meant to assist in transitioning to the current monitoring data format. They are currently empty and are no longer of any use.
Impact: Discontinue the use of the xpack.monitoring.exporters.*.index.template.create_legacy_templates setting as it will have no functionality in 8.0.0 and will eventually be removed.
REST API deprecations
`The estimated_heap_memory_usage_bytes property in the create trained models API is deprecated` estimated_heap_memory_usage_bytes创建训练模型 API 中的属性已弃用
Details: The estimated_heap_memory_usage_bytes property in the create trained models API is deprecated in 7.16.
Impact: Use model_size_bytes instead.
Settings deprecations
`We no longer recommend using transient cluster settings.` 我们不再建议使用临时集群设置。
Details: We no longer recommend using transient cluster settings. Use persistent cluster settings instead. If a cluster becomes unstable, transient settings can clear unexpectedly, resulting in an undesired cluster configuration.
Impact: Transient cluster settings are not yet deprecated, but we plan to deprecate them in a future release. For migration steps, see the Transient settings migration guide.
Indices deprecations 索引设置
`Direct access to system indices is deprecated.` 直接访问系统索引被弃用
Details: Directly accessing system indices is deprecated. In Elasticsearch 8.0, you must add the allow_restricted_indices permission set to true on a user role to access system indices. Refer to indices privileges for information on adding this permission to an index privilege.
Impact: Accessing system indices directly results in warnings in the header of API responses and in the deprecation logs. Use Kibana or the associated feature’s Elasticsearch APIs to manage the data that you want to access. While it’s still possible to access system indices in Elasticsearch 7.16, they are reserved only for internal use by Elastic products and should not be accessed directly.
Cluster deprecations
`The script context cache is deprecated.` 脚本上下文缓存已被弃用
Details: Setting script.max_compilations_rate to use-context and configuring context-specific caches is deprecated.
Context-specific caches are no longer needed to prevent system scripts from triggering rate limits.
Configure the general cache to control the max compilation rate, cache size, and cache expiration for your scripts.
Impact: Remove script.max_compilations_rate: use-context and the context-specific cache settings: script.context.$CONTEXT.cache_max_size, script.context.$CONTEXT.max_compilations_rate, script.context.$CONTEXT.cache_expire.
The general cache defaults to a max size of 3000 with a rate limit of 150/5m, which allows 150 compilations per 5 minute period. By default, the entries in the cache do not expire.
To override the defaults, configure the script.cache.max_size, script.max_compilations_rate, and script.cache.expire settings.
Packaging deprecations 安装包弃用
`After 7.16.2, we’ll no longer release a Windows MSI installer package.` 不在提供Windows的MSI安装包,只有`.zip`压缩包
Details: After 7.16.2, we’ll no longer release Windows MSI installer packages for Elasticsearch. These packages were previously released in beta and didn’t receive widespread adoption.
Impact: To install Elasticsearch on Windows, use the .zip archive package instead.
Migrating to 7.15
Deprecations
Indices deprecations
`Indices created in Elasticsearch 6.x and earlier versions are deprecated.` 在 Elasticsearch 6.x 及更早版本中创建的索引已弃用
Details: In 8.x, Elasticsearch will only read indices created in version 7.0 or above. An 8.x node will not start in the presence of indices created in 6.x or earlier versions of Elasticsearch.
Impact: Before upgrading to an 8.x version, reindex any index created in 6.x or earlier versions with Elasticsearch 7.x. If you no longer need the index, delete it instead. You can use the get index API to check the Elasticsearch version in which an index was created.
GET *,-.*?human=true&filter_path=**.settings.index.version.created_string
`The simpleifs index store type is deprecated.` 索引simpleifs(索引一种存储类型)存储类型已弃用。
Details: The simplefs value for the index.store.type index setting is now deprecated. Use the niofs value for superior or equivalent performance instead.
Impact: To avoid deprecation warnings, discontinue use of the simpleifs store type in new indices or index templates. Reindex any index using simplefs into one with another store type.
Security deprecations
`The accept_default_password setting is deprecated.` 该accept_default_password设置已被弃用。
Details: In 6.0, we deprecated the accept_default_password cluster setting. We removed support for default passwords in 6.0 but did not remove the setting for backwards compatibility. In 8.0, we will remove the setting.
Impact: To avoid deprecation warnings, discontinue use of the setting.
`Native role cache settings are deprecated.` 本机角色缓存设置被弃用
Details: In 5.2, we deprecated the following cluster settings:
xpack.security.authz.store.roles.index.cache.max_size
xpack.security.authz.store.roles.index.cache.ttl
These native role cache settings have been unused since 5.2, but we did not remove the settings for backwards compatibility. In 8.0, we will remove the settings.
Impact: To avoid deprecation warnings, discontinue use of the settings.
Settings deprecations
`Fractional byte size values are deprecated.` 小字节(byte)大小值被弃用
Details: In 6.2, we deprecated support for fractional byte size values, such as `23.5pb`, in:
Cluster settings
Index settings
Cluster state metadata, such as an ILM policy, that support byte size values
Impact: To avoid deprecation warnings, discontinue use of fractional byte size values in your configurations. Update any existing configurations to use whole values.
Migrating to 7.14
Cluster changes
`Version barrier applies to all upgrades` 集群断定升级完成后不再接受未升级节点
Details: If a failure occurs during a rolling upgrade then Elasticsearch may prematurely conclude that the upgrade is complete and enable functionality which is incompatible with earlier versions. In versions before 7.14 Elasticsearch would accept older nodes into the cluster after completing the upgrade despite having enabled incompatible functionality, as long as the older nodes were from the same major series. From 7.14 onwards Elasticsearch will not accept any older nodes into a fully-upgraded cluster.
Impact: If a failure occurs during a rolling upgrade and older nodes cannot rejoin the cluster then you must upgrade the affected nodes. Once upgraded, they will join the cluster again.
Deprecations
被弃用,8.0版本被删除
Cross-cluster replication (CCR) deprecations 跨集群复制
`Auto-follow remote system indices is deprecated.` 自动关注远程系统索引被弃用
Details: Currently, remote system indices matching an auto-follow pattern are configured as a follower index automatically, this behavior is deprecated.
Impact: In 8.0.0, remote system indices matching an auto-follow pattern won’t be configured as a follower index automatically. In order to adapt to this new behaviour it is advised to exclude patterns matching system indices such as .tasks and kibana-*.
Core deprecations
`Setting cluster.routing.allocation.disk.watermark.enable_for_single_data_node=false is deprecated.` 集群数据节点设置
Details: The setting cluster.routing.allocation.disk.watermark.enable_for_single_data_node should never be explicitly set to false. In 8.0, the only legal value will be true. In a future release, the setting will be removed completely, with same behavior as if the setting was true.
Impact: If your cluster has a single data node then set cluster.routing.allocation.disk.watermark.enable_for_single_data_node: true to opt in to the future behaviour today. If you wish to disable the disk watermarks then set cluster.routing.allocation.disk.threshold_enabled: false.
If your cluster has multiple data nodes then the cluster.routing.allocation.disk.watermark.enable_for_single_data_node setting has no effect and you should discontinue its use.
Search deprecations
`The geo_bounding_box query’s type parameter is deprecated.` geo_bounding_box 查询中 type参数被弃用
Details: The geo_bounding_box query’s type parameter has been deprecated in 7.14.0. This parameter is a no-op and has no effect on the query.
Impact: Discontinue use of the type parameter in geo_bounding_box queries.
Security deprecations
`Having security disabled by default on basic and trial licenses is deprecated.` 在基本许可证和试用许可证上默认禁用安全性被弃用
Details: Elasticsearch security features are disabled by default when operating on a basic or trial license if xpack.security.enabled is not set to true. In Elasticsearch 8.0.0, security features will be enabled by default for all licenses unless you explicitly disable security by setting xpack.security.enabled to false (not recommended).
Before migrating to Elasticsearch 8.0.0, you must explicitly set a value for xpack.security.enabled or Elasticsearch will fail to start. If you have already enabled security features by explicitly setting xpack.security.enabled to true, your configuration will be respected in 8.0.0.
Otherwise, on every node in your cluster, enable Elasticsearch security features by setting xpack.security.enabled to true in elasticsearch.yml. You then configure security for the transport layer on each node, which requires generating a certificate authority (if you don’t have one), creating node security certificates, and configuring internode communication. Refer to set up basic security for the Elastic Stack for steps on configuring security.
`Configuring a realm name with a leading underscore is deprecated.` 使用前导下划线配置realm name被弃用
Details: Elasticsearch creates "synthetic" realm names on the fly for services like API keys. These synthetic realm names are prefixed with an underscore. Currently, user configured realms can also be given a name with a leading underscore. This creates confusion since realm names are meant to be unique for a node.
Impact: Configuring a realm name with a leading underscore is deprecated. In a future release of Elasticsearch it will result in an error on startup if any user configured realm has a name with a leading underscore.
Migrating to 7.13
Mapping changes 映射调整
`Geo mappers no longer accept external values from multifields.` Geo(地理)类型字段不能作为多字段类型
Details: In earlier versions, geo fields could theoretically be used as a subfield if their parent field set a geometry object as an external value during parsing. This functionality was unused within the Elasticsearch codebase and blocked required changes to allow index-time scripts on geo_point fields, so it has been removed.
`Geopoint mappers pass geohashes to subfields one-by-one.` Geopoint 通过 geohashes 一对一映射到子字段
Details: In earlier versions, a multiply-valued geopoint field would pass its values as geohashes to subfields by combining them in to a single comma-delimited string. These are now passed one-by-one as single geohash strings.
SSL/TLS changes 传输
`TLSv1.1 and TLSv1.0 are disabled in the bundled JDK` 7.12有
Details: When using the bundled JDK, TLSv1.1 and TLSv1.0 are disabled by default. This may affect SSL connections to the Rest API for some older clients. It also has the potential to affect outgoing connections such as Watcher webhooks, LDAP authentication or access to snapshot repositories.
Most Elasticsearch deployments will not be affected by this change, as these older TLS versions have known vulnerabilities and are no longer heavily used.
For instructions on how to enable these older TLS versions in your Elasticsearch cluster, see Enabling additional SSL/TLS versions on your JDK.
Settings changes 设置
`xpack.searchable.snapshot.shared_cache.size is no longer a supported user setting for Elasticsearch Service` 不在支持用户设置`xpack.searchable.snapshot.shared_cache.size`(搜索快照)
Details: You can no longer configure xpack.searchable.snapshot.shared_cache.size on Elasticsearch Service deployments running Elasticsearch 7.13 or a later version. This setting reserves disk space for the shared cache of partially mounted indices. Elasticsearch now automatically configures the setting to 90% of total disk space for frozen data tier nodes and to 0b for non-frozen data tier nodes.
Impact: If you use Elasticsearch Service and previously configured xpack.searchable.snapshot.shared_cache.size, remove it from your user settings before upgrading to 7.13 or a later version. Otherwise, attempts to upgrade the deployment will fail and return an error.(升级到高版本需要删除改设置)
`Changes to the frozen tier and multiple data paths` 对冻结层和多个数据路径修改(搜索快照)
Details: Elasticsearch 7.12 included a technical preview of the frozen tier, being able to use partially mounted indices (searchable snapshots mounted with the shared cache option). Trying out this feature required configuring a shared cache using the xpack.searchable.snapshot.shared_cache.size setting.
In Elasticsearch 7.13+, having a non-zero xpack.searchable.snapshot.shared_cache.size on nodes utilizing multiple data paths (path.data points to multiple locations) is no longer supported and will prevent the node from starting. If you do not utilize multiple data paths this will not affect you. Likewise, if you have not set xpack.searchable.snapshot.shared_cache.size and have not configured dedicated frozen nodes (nodes with the data_frozen role and no other data roles) this will not affect you.
Deprecations 弃用部分
被标记为弃用,在8.0版本中将被删除
Aggregation deprecations 聚合
`Date aggregations on boolean fields are deprecated.` 日期聚合不支持布尔字段
Details: Support for auto-interval date histogram, date histogram, and date range aggregations on boolean fields is now deprecated. On boolean fields, these aggregations are rarely useful and often unintended.
Core deprecations
`Multiple data path support is deprecated.` 多个数据路径支持被弃用(数据存储)
Details: The path.data setting accepts a list of data paths, but if you specify multiple paths then the behaviour is unintuitive and usually does not give the desired outcomes. Support for multiple data paths is now deprecated and will be removed in a future release.
Impact: To avoid deprecation warnings, specify a single path in path.data. If needed, you can create a filesystem which spans multiple disks with a hardware virtualisation layer such as RAID, or a software virtualisation layer such as Logical Volume Manager (LVM) on Linux or Storage Spaces on Windows. If you wish to use multiple data paths on a single machine then you must run one node for each data path.
If you currently use multiple data paths in a highly available cluster then you can migrate to a setup that uses a single path for each node without downtime using a process similar to a rolling restart: shut each node down in turn and replace it with one or more nodes each configured to use a single data path. In more detail, for each node that currently has multiple data paths you should follow the following process.
1. Take a snapshot to protect your data in case of disaster.
1. Optionally, migrate the data away from the target node by using an allocation filter:
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.exclude._name": "target-node-name"
}
}
You can use the cat allocation API to track progress of this data migration. If some shards do not migrate then the cluster allocation explain API will help you to determine why.
- Follow the steps in the rolling restart process up to and including shutting the target node down.
- Ensure your cluster health is yellow or green, so that there is a copy of every shard assigned to at least one of the other nodes in your cluster.
- If applicable, remove the allocation filter applied in the earlier step.
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.exclude._name": null
}
}
1. Discard the data held by the stopped node by deleting the contents of its data paths.
2. Reconfigure your storage. For instance, combine your disks into a single filesystem using LVM or Storage Spaces. Ensure that your reconfigured storage has sufficient space for the data that it will hold.
3. Reconfigure your node by adjusting the path.data setting in its elasticsearch.yml file. If needed, install more nodes each with their own path.data setting pointing at a separate data path.
4. Start the new nodes and follow the rest of the rolling restart process for them.
5. Ensure your cluster health is green, so that every shard has been assigned.
You can alternatively add some number of single-data-path nodes to your cluster, migrate all your data over to these new nodes using allocation filters, and then remove the old nodes from the cluster. This approach will temporarily double the size of your cluster so it will only work if you have the capacity to expand your cluster like this.
If you currently use multiple data paths but your cluster is not highly available then the you can migrate to a non-deprecated configuration by taking a snapshot, creating a new cluster with the desired configuration and restoring the snapshot into it.
`The action.destructive_requires_name setting will default to true in 8.0.0.` 设置被设置为true
Details: In 8.0.0, the action.destructive_requires_name setting will default to true. Currently, the setting defaults to false.
Impact: If you use a wildcard (*) or _all to delete indices or perform other destructive actions, use the update cluster settings API to set action.destructive_requires_name to false to avoid errors in 8.0.0.
`index.indexing.slowlog.level and index.search.slowlog.level are deprecated.` 日志设置被弃用,用其他代替
Details: The index.indexing.slowlog.level and index.search.slowlog.level index settings are now deprecated. You use these setting to set the logging level for the search and indexing slow logs. To reproduce similar results, use the respective index.indexing.slowlog.threshold.index.debug and index.indexing.slowlog.threshold.index.trace index settings instead. The same applies to index.search.slowlog.level which should be replaced with index.search.slowlog.threshold.query.{level}.
For example, to reproduce a index.indexing.slowlog.level setting of INFO, set index.indexing.slowlog.threshold.index.debug and index.indexing.slowlog.threshold.index.trace to -1.
Impact: To avoid deprecation warnings, discontinue use of the deprecated settings.
EQL deprecations 事件查询语言
`The wildcard function is deprecated.` wildcard 函数 被弃用
Impact: Use the like or regex keyword instead.
Security deprecations 安全
`Implicit enablement of the file and native realms is deprecated.` 隐含启用native realms(用户认证)被弃用
Details: Currently, the file and native realms have the following implicit behaviors:
If file and native realms are not configured, they are implicitly disabled if there are other explicitly configured realms.
If no realm is available because realms are unconfigured, explicitly disabled, or not allowed by your license, the file and native realms are always enabled, even if explicitly disabled.
Impact: Both of the above behaviors are deprecated. In 8.0.0, the file and native realms will always be enabled unless explicitly disabled. If they are explicitly disabled, they remain disabled at all times.
`System call filter setting deprecated`
Details: Elasticsearch uses system call filters to remove its ability to fork another process. This is useful to mitigate remote code exploits. These system call filters are enabled by default, and controlled via the setting bootstrap.system_call_filter. Starting in Elasticsearch 8.0, system call filters will be required. As such, the setting bootstrap.system_call_filter is deprecated and will be removed in Elasticsearch 8.0.
Impact: Discontinue use of the removed setting. Specifying this setting in Elasticsearch configuration will result in an error on startup.
Settings deprecations
`Several tier filtering settings are deprecated.` 该设置将分片分配到特定节点
Details: The following cluster settings are now deprecated:
cluster.routing.allocation.include._tier
cluster.routing.allocation.exclude._tier
cluster.routing.allocation.require._tier
The following index settings are also now deprecated:
index.routing.allocation.include._tier
index.routing.allocation.exclude._tier
index.routing.allocation.require._tier
These settings are used to filter the allocation of a shard to a specific set of nodes. Instead, use the index.routing.allocation.include._tier_preference index setting.
Impact: To avoid deprecation warnings, discontinue use of the deprecated settings.
`The path.shared_data and index.data_path settings are deprecated.`
Details: The path.shared_data node setting and index.data_path index setting are now deprecated. Elasticsearch previously used these settings for shadow replicas. The shadow replicas feature was deprecated in 5.2 and removed in 6.0.
Impact: To avoid deprecation warnings, discontinue use of the deprecated settings.
Migrating to 7.12
ngine changes 引擎调整
`Force-merges on frozen and searchable snapshot indices will fail if merging is required.` 对不可变和冻结索引强制合并会失败(修复错误)
Details: In earlier versions a force-merge on a frozen index or a searchable snapshot index would incorrectly yield a successful response without performing the requested merge. This bug is fixed in version 7.12: from this version onwards a force-merge on these immutable indices will fail if the requested merge is not a no-op.
Search changes 搜索调整
`The search APIs fields parameter returns fields inside nested fields grouped together.` 搜索api中指定field参数后的返回结果结构调整了
Details: In earlier versions, fields retrieved via fields in the search API were returned as a flat list. From 7.12 on, fields inside an object that is mapped using the nested field type are grouped together to maintain the independence of each object inside the original nested array.
SSL/TLS changes 传输层加密,影响老的客户端
`TLSv1.1 and TLSv1.0 are disabled in the bundled JDK` JDK中默认被禁用
Details: As of Elasticsearch 7.12.1, when using the bundled JDK, TLSv1.1 and TLSv1.0 are disabled by default. This may affect SSL connections to the Rest API for some older clients. It also has the potential to affect outgoing connections such as Watcher webhooks, LDAP authentication or access to snapshot repositories.
Most Elasticsearch deployments will not be affected by this change, as these older TLS versions have known vulnerabilities and are no longer heavily used.
For instructions on how to enable these older TLS versions in your Elasticsearch cluster, see Enabling additional SSL/TLS versions on your JDK.
Deprecations 弃用部分
弃用部分将在8.0版本中被删除
Settings deprecations 设置
`Setting xpack.searchable.snapshot.shared_cache.size on non-frozen nodes is deprecated.` 在非冻结节点中设置`xpack.searchable.snapshot.shared_cache.size`被弃用
Details: Setting xpack.searchable.snapshot.shared_cache.size to a positive value on a node without the data_frozen role is now deprecated.
The xpack.searchable.snapshot.shared_cache.size node setting reserves space for a shared cache used by partially mounted searchable snapshot indices. Elasticsearch only allocates partially mounted indices to nodes with the data_frozen role.
Impact: To avoid deprecation warnings, discontinue use of the setting on non-frozen nodes.
Migrating to 7.11
Machine learning changes 机器学习
`The trained models API parameter for_export is now renamed to exclude_generated.`
Details: The get trained models API no longer accepts for_export. Use exclude_generated instead.
REST API changes REST API
`REST APIs that do not use a request body now return an error if a body is provided.` 请求中有body,但body为空时返回错误
Details: Several Elasticsearch REST APIs do not use a request body. In previous versions, you could provide a request body when calling these APIs, and Elasticsearch would ignore the body. These APIs now return an error if you provide a request body, even if empty.
Impact: Update your application or workflow to avoid sending unneeded request bodies in REST API requests.
Search changes 搜索
`Keyword fields with a custom normalizer will use the normalized form when highlighting.` 高亮大小写问题
Details: Highlighters now use the same framework to load their values as the fields section of a search response. This means that normalization will be applied to the values of a keyword field; for example, a field configured with a lowercase normalizer will return highlighted snippets in lower case.(举例,当一个字段配置了小写normalizer时,返回高亮片段就是小写)
`Internal fields used for text search acceleration are hidden.` 内部字段被用于文本搜索加速时被隐藏
Details: Text fields can add internal subfields using extra analysis to speed up prefix and phrase searches. Previously these were exposed to the field caps API and were available for searching directly. However, they did not implement all query types and could return bad results or throw errors if used via the query DSL. These subfields are now internal only and cannot be invoked as searchable fields in queries.
`The significant text aggregation now throws an error if applied to a numeric field.` 对文本类的字段做计算的聚合直接返回错误(理解应该是这个意思)
Details: The significant text aggregation could previously be applied to a fields that were defined as numeric, which made little sense and would always return an empty result. Given that applying a text-specific aggregation to a non-text field is almost certainly a mistake, this has now been changed to throw an error.
Transform changes Transforms(图标,汇总)
`Transforms now write group_by dates as strings.`
Details: Transforms now write dates used in a group_by as formatted ISO strings instead of epoch_millis values. Previously constructed transforms will still use epoch_millis values. You can configure and change the output format in the settings of the transform.
*Deprecations 弃用部分
Transport deprecations Transforms(图标,汇总)
`The es.unsafely_permit_handshake_from_incompatible_builds system property is deprecated.`
Details: The es.unsafely_permit_handshake_from_incompatible_builds system property is now deprecated.
Elasticsearch verifies that communicating pairs of nodes of the same version are running the same build and using the same wire format. You can bypass this check by setting es.unsafely_permit_handshake_from_incompatible_builds to true. Skipping this check is unsafe and not recommended.
Impact: To avoid deprecation warnings, discontinue use of the system property. Instead ensure that all nodes of the same version are running the same build.
Migrating to 7.10
Authentication changes 授权
`API keys now require a name property.` api keys(查询数据的授权方式之一) 现在需要一个名字
Details: The name property is now required to create or grant an API key.
{
"...": "...",
"api_key": {
"name": "key-1"
}
}
Impact: To avoid errors, specify the name property when creating or granting API keys.
Java changes
`The MappedFieldType#fielddataBuilder method now accepts a Supplier<SearchLookup> argument.` 映射器插件受影响
Details: To support future feature development, the existing MappedFieldType#fielddataBuilder method now accepts a new Supplier<SearchLookup> argument.
Impact: If you develop or maintain a mapper plugin, update your implementation of the MappedFieldType#fielddataBuilder method to accommodate the new signature.
Networking changes
`The *.tcp.keep_idle and *.tcp.keep_interval settings are now limited to 300 seconds.` 网络超时限制为300s
Details: The `{network,transport,http}.tcp.keep_idle` and `{network,transport,http}.tcp.keep_interval` settings now have a maximum value of 300 seconds, equivalent to 5 minutes.
Impact: If specified, ensure the `{network,transport,http}.tcp.keep_idle` and `{network,transport,http}.tcp.keep_interval` settings do not exceed 300 seconds. Setting `{network,transport,http}.tcp.keep_idle` or `{network,transport,http}.tcp.keep_interval` to a value greater than 300 seconds in elasticsearch.yml will result in an error on startup.
Search changes
`The index.max_docvalue_fields_search setting now limits doc value fields returned by inner_hits or the top_hits aggregation.` 限制 inner_hits查询, top_hits聚合 文档字段数量
Details: The index.max_docvalue_fields_search setting limits the number of doc value fields retrieved by a search. Previously, this setting applied only to doc value fields returned by the docvalue_fields parameter in a top-level search. The setting now also applies to doc value fields returned by an inner_hits section or top_hits aggregation.
Impact: If you use inner_hits or the top_hits aggregation, ensure index.max_docvalue_fields_search is configured correctly for your use case.
Deprecations 弃用
Cluster deprecations
`The cluster.join.timeout setting is deprecated.` 集群设置被弃用
Details: The cluster.join.timeout node setting is deprecated and will be removed in 8.0. In 7.x clusters, join attempts no longer time out.
Impact: To avoid deprecation warnings, discontinue use of the setting.
Indices deprecations
`REST API access to system indices is deprecated.` rest api 系统索引被弃用
We are deprecating REST API access to system indices. Most REST API requests that attempt to access system indices will return the following deprecation warning:
this request accesses system indices: [.system_index_name], but in a future
major version, direct access to system indices will be prevented by default
The following REST API endpoints access system indices as part of their implementation and will not return the deprecation warning:
GET _cluster/health
GET {index}/_recovery
GET _cluster/allocation/explain
GET _cluster/state
POST _cluster/reroute
GET {index}/_stats
GET {index}/_segments
GET {index}/_shard_stores
GET _cat/[indices,aliases,health,recovery,shards,segments]
Impact: To avoid deprecation warnings, do not use unsupported REST APIs to access system indices.
Machine learning deprecations 机器学习
`The allow_no_jobs and allow_no_datafeeds API parameters are deprecated.`
Details: The allow_no_jobs and allow_no_datafeeds parameters in machine learning APIs are deprecated in favor of allow_no_match. The old parameters are still accepted by the APIs but a deprecation warning is emitted when the old parameter name is used in the request body or as a request parameter. High-level REST client classes now send the new allow_no_match parameter.
Impact: To avoid deprecation warnings, use the allow_no_match parameter.
Mapping deprecations 映射
`The boost parameter on field mappings has been deprecated.` 映射和模板字段的boost参数被弃用
Details: Index-time boosts have been deprecated since the 5.x line, but it is still possible to declare field-specific boosts in the mappings. This is now deprecated as well, and will be removed entirely in 8.0.0. Mappings containing field boosts will continue to work in 7.x but will emit a deprecation warning.
Impact: The boost setting should be removed from templates and mappings. Use boosts directly on queries instead.
Snapshot and restore deprecations 快照和恢复快照
`The repository stats API has been deprecated.` 资源统计接口被弃用
Details: The repository stats API was introduced as an experimental API in 7.8.0. The repositories metering APIs now replace the repository stats API. The repository stats API has been deprecated and will be removed in 8.0.0.
Impact: Use the repositories metering APIs. Discontinue use of the repository stats API.
Breaking changes in 7.9
Indices changes
`Elasticsearch includes built-in index templates for logs-*-* and metrics-*-*.` 新增了内置索引模板
*Details*: In 7.9, Elasticsearch added built-in index templates for the metrics-*-* and logs-*-* index patterns, each with a priority of 100. Elastic Agent uses these templates to create data streams.
*Impact*: If you use Elastic Agent, assign your index templates a priority lower than 100 to avoid overriding the built-in templates.
Otherwise, to avoid accidentally applying the built-in templates, use a non-overlapping index pattern or assign templates with an overlapping pattern a priority higher than 100.
For example, if you don’t use Elastic Agent and want to use a template for the logs-* index pattern, assign your template a priority of 200. This ensures your template is applied instead of the built-in template for logs-*-*.
To disable all built-in index and component templates, set stack.templates.enabled to false in elasticsearch.yml before start up. If the templates already exist, this setting ensures Elasticsearch does not recreate the built-in templates after deletion.
Script cache changes 脚本缓存
`The script.cache.max_size setting is deprecated.`
*Details*: The script.cache.max_size setting is deprecated. In Elasticsearch 8.0.0, this is set per-context.
*Impact*: To avoid deprecation warnings, discontinue use of the script.cache.max_size setting. You may use script.context.$CONTEXT.cache_max_size for the particular context. For example, for the ingest context, use script.context.ingest.cache_max_size.
`The script.cache.expire setting is deprecated.`
*Details*: The script.cache.expire setting is deprecated. In Elasticsearch 8.0.0, this is set per-context.
*Impact*: To avoid deprecation warnings, discontinue use of the script.cache.expire setting. You may use script.context.$CONTEXT.cache_expire for the particular context. For example, for the update context, use script.context.update.cache_expire.
`The script.max_compilations_rate setting is deprecated.`
*Details*: The script.max_compilations_rate setting is deprecated. In Elasticsearch 8.0.0, this is set per-context.
*Impact*: To avoid deprecation warnings, discontinue use of the script.max_compilations_rate setting. You may use script.context.$CONTEXT.max_compilations_rate for the particular context. For example, for the processor_conditional context, use script.context.processor_conditional.max_compilations_rate.
`Mapping actions have been deprecated for the create_doc, create, index and write privileges.`
Mapping actions have been deprecated for the create_doc, create, index and write privileges.
*Details*: In Elasticsearch 8.0.0, the following privileges will no longer allow users to explicitly update the mapping of an index:
create_doc
create
index
write
Additionally, in Elasticsearch 8.0.0, the following privileges will no longer allow users to dynamically update the mapping of an index during indexing or ingest:
create_doc
create
index
These privileges will continue to allow mapping actions on indices (but not on data streams) until Elasticsearch 8.0.0. However, deprecation warnings will be returned.
*Impact*: To allow users to explicitly update the mapping of an index, grant the manage privilege.
To dynamically update the mapping of an index during indexing or ingest, grant the auto_configure privilege and use index templates. This lets you dynamically update the index mapping based on the template’s mapping configuration.
Settings changes
`Automatically importing dangling indices is disabled by default.` 自动导入悬空索引被禁止
*Details*: Automatically importing dangling indices into the cluster is unsafe and is now disabled by default. This feature will be removed entirely in Elasticsearch 8.0.0.
Impact
Use the Dangling indices API to list, delete or import any dangling indices manually.
Alternatively you can enable automatic imports of dangling indices, recovering the unsafe behaviour of earlier versions, by setting gateway.auto_import_dangling_indices to true. This setting is deprecated and will be removed in Elasticsearch 8.0.0. We do not recommend using this setting.
`Several node role settings are deprecated.` 节点角色已经弃用
*Details*: The following node role settings are now deprecated:
node.data
node.ingest
node.master
node.ml
node.remote_cluster_client
node.transform
node.voting_only
Use the node.roles setting instead.
If you used the deprecated node role settings on a 7.13 or later cluster, you will have a deprecation log message on each of your nodes indicating the exact replacement value for node.roles.
Impact
To avoid deprecation warnings, discontinue use of the deprecated settings.
Breaking changes in 7.8
License Information changes 许可证
`Displays Enterprise license as Platinum in /_xpack`
The GET /_license endpoint displays Enterprise licenses as Platinum by default so that old clients (including Beats, Kibana and Logstash) know to interpret this new license type as if it were a Platinum license.
This compatibility layer was not applied to the GET /_xpack/ endpoint, which also displays a license type and mode.
Aggregation changes 聚合
`Privilege indices:admin/create will no longer allow the auto creation of indices` 在 /_xpack 中将企业许可证显示为白金版
*Details*: The privilege named indices:admin/create will no longer allow the auto creation of indices. Use create_index instead.
`value_count aggregation optimization` value_count聚合优化
*Details*: Scripts used in value_count will now receive a number if they are counting a numeric field and a GeoPoint if they are counting a geo_point fields. They used to always receive the String representation of those values.
Mappings changes 映射
`The enabled mapping parameter cannot be changed for a root mapping.` enabled无法更改根映射的映射参数。
*Details*: Mapping requests that attempt to change the enabled mapping parameter for a root mapping will fail and return an error.
Previously, Elasticsearch accepted mapping requests that attempted to change the enabled parameter of the root mapping. Theses changes were not applied, but such requests didn’t return an error.
*Impact*: To avoid errors, do not submit mapping requests that change the enabled mapping parameter.
`The include_in_parent and include_in_root mapping parameters cannot be changed for nested fields.` 字段的include_in_parent和include_in_root映射参数无法更改nested,会报错
*Details*: Mapping requests that attempt to change the include_in_parent or include_in_root mapping parameter for a nested field will fail and return an error.
Previously, Elasticsearch accepted mapping requests that attempted to change the include_in_parent or include_in_root parameter. Theses changes were not applied, but such requests didn’t return an error.
*Impact*: To avoid errors, do not submit mapping requests that change the include_in_parent or include_in_root mapping parameter.
`The get field mapping API’s local query parameter is deprecated.` 本地搜索被弃用
*Details*: The get field mapping API's local query parameter is deprecated and will be removed in Elasticsearch 8.0.0.
The local parameter is a no-op. The API always retrieves field mappings locally.
*Impact*: To avoid deprecation warnings, discontinue use of the local parameter.
Settings changes 设置
`The node.local_storage setting is deprecated.` 该node.local_storage设置已被弃用。
*Details*: The node.local_storage setting is deprecated. In Elasticsearch 8.0.0, all nodes require local storage.
*Impact*: To avoid deprecation warnings, discontinue use of the node.local_storage setting.
`Several X-Pack settings no longer have any effect and are deprecated.` 一些 X-Pack 设置不再有任何效果并且已被弃用。
*Details*: Basic X-Pack license features are always enabled for the default distribution and the following settings no longer have any effect:
xpack.enrich.enabled
xpack.flattened.enabled
xpack.ilm.enabled
xpack.monitoring.enabled
xpack.rollup.enabled
xpack.slm.enabled
xpack.sql.enabled
xpack.transform.enabled
xpack.vectors.enabled
Previously, they could be set to false to disable the feature’s APIs in a cluster.
*Impact*: To avoid deprecation warnings, discontinue use of these settings. If you have disabled ILM so that you can use another tool to manage Watcher indices, the newly introduced xpack.watcher.use_ilm_index_management setting may be set to false.
`Changes to built-in users` 默认用户更名kibana->kibana_system
*Details*: The kibana user was historically used to authenticate Kibana to Elasticsearch. The name of this user was confusing, and was often mistakenly used to login to Kibana. We’ve replaced the kibana user with the kibana_system user to reduce confusion and to better align with other built-in system accounts.
*Impact*: If your kibana.yml used to contain:
elasticsearch.username: kibana
then you should update to use the new kibana_system user instead:
elasticsearch.username: kibana_system
> The new kibana_system user does not preserve the previous kibana user password. You must explicitly set a password for the kibana_system user.
Cluster coordination changes 集群调度
`The voting configuration exclusions API’s POST _cluster/voting_config_exclusions/<node_name> request path is deprecated.`
*Details*: The voting configuration exclusions API’s POST _cluster/voting_config_exclusions/<node_name> request path is now deprecated. To add a voting configuration exclusion, specify node names or node IDs using a query parameter instead:
POST _cluster/voting_config_exclusions?node_names=<node_names>
POST _cluster/voting_config_exclusions?node_ids=<node_ids>
*Impact*: To avoid deprecation warnings, discontinue use of the POST _cluster/voting_config_exclusions/<node_name> request path.
Transform changes Transforms(图标,汇总) 调整
`The max_page_search_size property is deprecated in the pivot transform configuration object`
*Details*: The max_page_search_size property within pivot is deprecated in the create transform and preview transform APIs.
*Impact*: Use the max_page_search_size property within settings instead.
Breaking changes in 7.7
Indices deprecations 索引启用
`Translog retention settings are deprecated.`
The index.translog.retention.age and index.translog.retention.size index settings are now deprecated. These settings have been ignored since 7.4 in favor of soft deletes.
To avoid deprecation warnings, discontinue use of the settings.
Logging changes 日志调整
`Loggers under org.elasticsearch.action now log at INFO level by default` org.elasticsearch.action 的日志现在调整为INFO
The default log level for most loggers is INFO, but in earlier versions loggers in the org.elasticsearch.action.* hierarchy emitted log messages at DEBUG level by default. This sometimes resulted in a good deal of unnecessary log noise. From 7.7 onwards the default log level for logger in this hierarchy is now INFO, in line with most other loggers. If needed, you can recover the pre-7.7 default behaviour by adjusting your logging.
Mapping changes mapping调整
`Validation for dynamic templates` 检查动态模板更严格
So far misconfiguration of dynamic templates have been discovered when indexing a document with an unmapped field only. In Elasticsearch 8.0 and later versions, dynamic mappings have stricter validation, done at mapping update time. Invalid updates, such as using incorrect analyzer settings or unknown field types, fail. For indices created in Elasticsearch 7.7 and later version, the update succeeds but emits a warning.
Settings changes 设置调整
`thread_pool.listener.size and thread_pool.listener.queue_size have been deprecated` listener线程池被启用
The listener thread pool is no longer used internally by Elasticsearch. Therefore, these settings have been deprecated. You can safely remove these settings from the configuration of your nodes.
`cluster.remote.connect is deprecated in favor of node.remote_cluster_client` 作为远端服务的客户端
Previously the setting cluster.remote.connect was used to configure whether or not the local node is capable of acting as a remote cluster client in cross-cluster search and cross-cluster replication. This setting is deprecated in favor of node.remote_cluster_client serves the same purpose and identifies the local node as having the remote_cluster_client role.
`Authentication realm order will be a required config in version 8.0.0.` 授权要求配置order
The order config will be required in version 8.0.0 for authentication realm configuration of any type. If the order config is missing for a realm, the node will fail to start.
`Authentication realm order uniqueness will be enforced in version 8.0.0.` 授权要求配置order唯一
The order config of authentication realms must be unique in version 8.0.0. If you configure more than one realm of any type with the same order, the node will fail to start.
`Deprecation of insecure monitoring password setting` 启用不安全的监控密码设置
The auth.password setting for the monitoring HTTP exporter has been deprecated and will be removed in version 8.0.0. Please use the auth.secure_password setting instead.
`Settings used to defer cluster recovery pending a certain number of master nodes are deprecated.` 用于推迟集群恢复以等待一定数量的主节点的设置已被弃用
The following cluster settings are now deprecated:
gateway.expected_nodes
gateway.expected_master_nodes
gateway.recover_after_nodes
gateway.recover_after_master_nodes
It is safe to recover the cluster as soon as a majority of master-eligible nodes have joined. There is no benefit in waiting for any additional master-eligible nodes to start.
To avoid deprecation warnings, discontinue use of the deprecated settings. If needed, use gateway.expected_data_nodes or gateway.recover_after_data_nodes to defer cluster recovery pending a certain number of data nodes.
Search changes 搜索调整
`Consistent rounding of range queries on date_range fields` 对date_range处理调成range一样,不指定毫秒时四舍五入
range queries on date_range field currently can have slightly differently boundaries than their equivalent query on a pure date field. This can e.g. happen when using date math or dates that don’t specify up to the last millisecond. While queries on date field round up to the latest millisecond for gt and lte boundaries, the same queries on date_range fields didn’t do this. The behavior is now the same for both field types like documented in Date math and rounding.
`Pipeline aggregation validation errors` 管道验证错误响应调整
The pipeline aggregation validation has been moved to the coordinating node. Those errors that used to return HTTP 500s/Internal Server Errors now return 400/Bad Request and we now return a list of validation errors rather than the first one we encounter.
`Highlighters changes` 高亮调整
Ignored keyword values are no longer highlighted
If a keyword value was ignored during indexing because of its length (ignore_above parameter was applied), Elasticsearch doesn’t attempt to highlight it anymore, which means no highlights are produced for ignored values.
Breaking changes in 7.6
"Security changes" 安全调整
`Elasticsearch API key privileges`
If you use an API key to create another API key (sometimes called a derived key), its behavior is *impact*ed by the fix for CVE-2020-7009.
When you make a request to create API keys, you can specify an expiration and privileges for the API key. Previously, when you created a derived key, it had no privileges. This behavior disregarded any privileges that you specified in the create API key API.
As of 7.6.2, this behavior changes. To create a derived key, you must explicitly specify a role descriptor with no privileges:
"role_descriptors": {
"no-privilege": {
}
}
Search changes
`Aggregating and sorting on _id is deprecated` 聚合中使用`_id`被弃用
It’s possible to aggregate and sort on the built-in _id field by loading an expensive data structure called fielddata. This was deprecated in 7.6 and will be disallowed by default in 8.0. As an alternative, the _id field’s contents can be duplicated into another field with docvalues enabled (note that this does not apply to auto-generated IDs).
`Deprecation of sparse_vector fields` 字段被弃用
The sparse_vector field type has been deprecated and will be removed in 8.0. We have not seen much interest in this experimental field type, and don’t see a clear use case as it’s currently designed. If you have feedback or suggestions around sparse vector functionality, please let us know through GitHub or the discuss forums.
`Update to vector function signatures` 向量函数调整
The vector functions of the form function(query, doc['field']) are deprecated, and the form function(query, 'field') should be used instead. For example, cosineSimilarity(query, doc['field']) is replaced by cosineSimilarity(query, 'field').
`Disallow use of the nGram and edgeNGram tokenizer names` 禁用nGram和edgeNGram的tokenizer
The nGram and edgeNGram tokenizer names haven been deprecated with 7.6. Mappings for indices created after 7.6 will continue to work but emit a deprecation warning. The tokenizer name should be changed to the fully equivalent ngram or edge_ngram names for new indices and in index templates.
Breaking changes in 7.5
Allocation deprecations
`The cluster.routing.allocation.disk.include_relocations setting is deprecated.`
The cluster.routing.allocation.disk.include_relocations cluster setting is now deprecated. In future versions, Elasticsearch will account for the sizes of relocating shards when making allocation decisions based on the disk usage of nodes in the cluster.
Currently, you can set cluster.routing.allocation.disk.include_relocations to false to disable this accounting. This can result in poor allocation decisions that might overshoot watermarks and require significant work to correct.
To avoid deprecation warnings, discontinue use of the setting.
Search Changes
`Stricter checking for wildcard queries on _index` 更加严格的wildcard对_index字段的查询
Previously, a wildcard query on the _index field matched directly against the fully-qualified index name. Now, in order to match against remote indices like cluster:index, the query must contain a colon, as in cl*ster:inde*. This behavior aligns with the way indices are matched in the search endpoint.